summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/thrift/lib/delphi/test/Performance/DataFactory.pas
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/jaegertracing/thrift/lib/delphi/test/Performance/DataFactory.pas176
1 files changed, 176 insertions, 0 deletions
diff --git a/src/jaegertracing/thrift/lib/delphi/test/Performance/DataFactory.pas b/src/jaegertracing/thrift/lib/delphi/test/Performance/DataFactory.pas
new file mode 100644
index 000000000..e131822a3
--- /dev/null
+++ b/src/jaegertracing/thrift/lib/delphi/test/Performance/DataFactory.pas
@@ -0,0 +1,176 @@
+// Licensed to the Apache Software Foundation(ASF) under one
+// or more contributor license agreements.See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+unit DataFactory;
+
+interface
+
+uses
+ SysUtils,
+ Thrift.Collections,
+ Thrift.Test;
+
+type
+ TestDataFactory = class
+ strict protected
+ class function CreateSetField(const count : Integer) : IHashSet< IInsanity>; static;
+ class function CreateInsanity(const count : Integer) : IInsanity; static;
+ class function CreateBytesArray(const count : Integer) : TBytes; static;
+ class function CreateXtructs(const count : Integer) : IThriftList< IXtruct>; static;
+ class function CreateXtruct(const count : Integer) : IXtruct; static;
+ class function CreateListField(const count : Integer) : IThriftList< IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>>; static;
+ class function CreateUserMap(const count : Integer) : IThriftDictionary< TNumberz, Int64>; static;
+ class function CreateListFieldData(const count : Integer) : IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>; static;
+ class function CreateIntHashSet(const count : Integer) : IHashSet< Integer>; static;
+ class function CreateListFieldDataDict(const count : Integer) : IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>; static;
+ class function CreateListFieldDataDictValue(const count : Integer) : IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>; static;
+ class function CreateListFieldDataDictValueList(const count : Integer) : IThriftList< IThriftDictionary< IInsanity, string>>; static;
+ class function CreateListFieldDataDictValueListDict(const count : Integer) : IThriftDictionary< IInsanity, string>; static;
+ public
+ class function CreateCrazyNesting(const count : Integer = 10) : ICrazyNesting; static;
+ end;
+
+implementation
+
+
+class function TestDataFactory.CreateCrazyNesting(const count : Integer = 10) : ICrazyNesting;
+begin
+ if (count <= 0)
+ then Exit(nil);
+
+ result := TCrazyNestingImpl.Create;
+ result.Binary_field := CreateBytesArray(count);
+ result.List_field := CreateListField(count);
+ result.Set_field := CreateSetField(count);
+ result.String_field := Format('data level %d', [count]);
+end;
+
+class function TestDataFactory.CreateSetField(const count : Integer) : IHashSet< IInsanity>;
+var i : Integer;
+begin
+ result := THashSetImpl< IInsanity>.Create;
+ for i := 0 to count-1 do begin
+ result.Add(CreateInsanity(count));
+ end;
+end;
+
+class function TestDataFactory.CreateInsanity(const count : Integer) : IInsanity;
+begin
+ result := TInsanityImpl.Create;
+ result.UserMap := CreateUserMap(count);
+ result.Xtructs := CreateXtructs(count);
+end;
+
+class function TestDataFactory.CreateXtructs(const count : Integer) : IThriftList< IXtruct>;
+var i : Integer;
+begin
+ result := TThriftListImpl< IXtruct>.Create;
+ for i := 0 to count-1 do begin
+ result.Add(CreateXtruct(count));
+ end;
+end;
+
+class function TestDataFactory.CreateXtruct(const count : Integer) : IXtruct;
+begin
+ result := TXtructImpl.Create;
+ result.Byte_thing := SmallInt(count mod 128);
+ result.I32_thing := count;
+ result.I64_thing := count;
+ result.String_thing := Format('data level %d', [count]);
+end;
+
+class function TestDataFactory.CreateUserMap(const count : Integer) : IThriftDictionary< TNumberz, Int64>;
+begin
+ result := TThriftDictionaryImpl< TNumberz, Int64>.Create;
+ result.Add(TNumberz.ONE, count);
+ result.Add(TNumberz.TWO, count);
+ result.Add(TNumberz.THREE, count);
+ result.Add(TNumberz.FIVE, count);
+ result.Add(TNumberz.SIX, count);
+ result.Add(TNumberz.EIGHT, count);
+end;
+
+class function TestDataFactory.CreateListField(const count : Integer) : IThriftList< IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>>;
+var i : Integer;
+begin
+ result := TThriftListImpl< IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>>.Create;
+ for i := 0 to count-1 do begin
+ result.Add(CreateListFieldData(count));
+ end;
+end;
+
+class function TestDataFactory.CreateListFieldData(const count : Integer) : IThriftDictionary< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>;
+var i : Integer;
+begin
+ result := TThriftDictionaryImpl< IHashSet< Integer>, IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>>.Create;
+ for i := 0 to count-1 do begin
+ result.Add( CreateIntHashSet(count), CreateListFieldDataDict(count));
+ end;
+end;
+
+class function TestDataFactory.CreateIntHashSet(const count : Integer) : IHashSet< Integer>;
+var i : Integer;
+begin
+ result := THashSetImpl< Integer>.Create;
+ for i := 0 to count-1 do begin
+ result.Add(i);
+ end;
+end;
+
+class function TestDataFactory.CreateListFieldDataDict(const count : Integer) : IThriftDictionary< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>;
+var i : Integer;
+begin
+ result := TThriftDictionaryImpl< Integer, IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>>.Create;
+ for i := 0 to count-1 do begin
+ result.Add(i, CreateListFieldDataDictValue(count));
+ end;
+end;
+
+class function TestDataFactory.CreateListFieldDataDictValue(const count : Integer) : IHashSet< IThriftList< IThriftDictionary< IInsanity, string>>>;
+var i : Integer;
+begin
+ result := THashSetImpl< IThriftList< IThriftDictionary< IInsanity, string>>>.Create;
+ for i := 0 to count-1 do begin
+ result.Add( CreateListFieldDataDictValueList(count));
+ end;
+end;
+
+class function TestDataFactory.CreateListFieldDataDictValueList(const count : Integer) : IThriftList< IThriftDictionary< IInsanity, string>>;
+var i : Integer;
+begin
+ result := TThriftListImpl< IThriftDictionary< IInsanity, string>>.Create;
+ for i := 0 to count-1 do begin
+ result.Add(CreateListFieldDataDictValueListDict(count));
+ end;
+end;
+
+class function TestDataFactory.CreateListFieldDataDictValueListDict(const count : Integer) : IThriftDictionary< IInsanity, string>;
+begin
+ result := TThriftDictionaryImpl< IInsanity, string>.Create;
+ result.Add(CreateInsanity(count), Format('data level %d', [count]));
+end;
+
+class function TestDataFactory.CreateBytesArray(const count : Integer) : TBytes;
+var i : Integer;
+begin
+ SetLength( result, count);
+ for i := 0 to count-1 do begin
+ result[i] := i mod $FF;
+ end;
+end;
+
+end.
+