]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/old/testnewbuffers.cc
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / test / old / testnewbuffers.cc
1
2 #include <list>
3 #include <iostream>
4 using namespace std;
5
6
7 #include "include/newbuffer.h"
8 //#include "include/bufferlist.h"
9
10 #include "common/Thread.h"
11
12
13 class Th : public Thread {
14 public:
15 bufferlist bl;
16 explicit Th(bufferlist& o) : bl(o) { }
17
18 void *entry() {
19 //cout << "start" << endl;
20 // thrash it a bit.
21 for (int n=0; n<10000; n++) {
22 bufferlist bl2;
23 unsigned off = rand() % (bl.length() -1);
24 unsigned len = 1 + rand() % (bl.length() - off - 1);
25 bl2.substr_of(bl, off, len);
26 bufferlist bl3;
27 bl3.append(bl);
28 bl3.append(bl2);
29 //cout << bl3 << endl;
30 bl2.clear();
31 bl3.clear();
32 }
33 //cout << "end" << endl;
34 }
35 };
36
37 int main()
38 {
39
40 bufferptr p1 = buffer::copy("123456",7);
41 //bufferptr p1 = new buffer("123456",7);
42 bufferptr p2 = p1;
43
44 cout << "p1 is '" << p1.c_str() << "'" << " " << p1 << endl;
45 cout << "p2 is '" << p2.c_str() << "'" << " " << p2 << endl;
46
47 bufferptr p3 = buffer::copy("abcdef",7);
48 //bufferptr p3 = new buffer("abcdef",7);
49
50 cout << "p3 is " << p3.c_str() << " " << p3 << endl;
51
52 bufferlist bl;
53 bl.push_back(p2);
54 bl.push_back(p1);
55 bl.push_back(p3);
56
57 cout << "bl is " << bl << endl;
58
59 bufferlist took;
60 bl.splice(10,4,&took);
61
62 cout << "took out " << took << ", leftover is " << bl << endl;
63 //cout << "len is " << bl.length() << endl;
64
65 bufferlist bl2;
66 bl2.substr_of(bl, 3, 5);
67 cout << "bl2 is " << bl2 << endl;
68
69
70 cout << "bl before " << bl << endl;
71
72 list<Th*> ls;
73 for (int t=0; t<40; t++) {
74 Th *t = new Th(bl);
75 cout << "create" << endl;
76 t->create();
77 ls.push_back(t);
78 }
79
80 bl.clear();
81
82 while (!ls.empty()) {
83 cout << "join" << endl;
84 ls.front()->join();
85 delete ls.front();
86 ls.pop_front();
87 }
88
89 cout << "bl after " << bl << endl;
90
91 }