@fluid-experimental/tree 2.0.0-dev.7.3.0.207992 → 2.0.0-dev.7.3.0.209023

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/lib/test/AppendOnlySortedMap.perf.tests.js +1 -1
  2. package/lib/test/AppendOnlySortedMap.perf.tests.js.map +1 -1
  3. package/lib/test/Attach.tests.js +1 -1
  4. package/lib/test/Attach.tests.js.map +1 -1
  5. package/lib/test/IdCompressor.perf.tests.js +1 -1
  6. package/lib/test/IdCompressor.perf.tests.js.map +1 -1
  7. package/lib/test/IdCompressor.tests.js +1 -1
  8. package/lib/test/IdCompressor.tests.js.map +1 -1
  9. package/lib/test/NumericUuid.tests.js +1 -1
  10. package/lib/test/NumericUuid.tests.js.map +1 -1
  11. package/lib/test/SessionIdNormalizer.tests.js +1 -1
  12. package/lib/test/SessionIdNormalizer.tests.js.map +1 -1
  13. package/lib/test/fuzz/Generators.d.ts +1 -1
  14. package/lib/test/fuzz/Generators.d.ts.map +1 -1
  15. package/lib/test/fuzz/Generators.js +1 -1
  16. package/lib/test/fuzz/Generators.js.map +1 -1
  17. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts +1 -1
  18. package/lib/test/fuzz/SharedTreeFuzzTests.d.ts.map +1 -1
  19. package/lib/test/fuzz/SharedTreeFuzzTests.js +1 -1
  20. package/lib/test/fuzz/SharedTreeFuzzTests.js.map +1 -1
  21. package/lib/test/fuzz/Types.d.ts +1 -1
  22. package/lib/test/fuzz/Types.d.ts.map +1 -1
  23. package/lib/test/fuzz/Types.js.map +1 -1
  24. package/lib/test/utilities/IdCompressorTestUtilities.d.ts +1 -1
  25. package/lib/test/utilities/IdCompressorTestUtilities.d.ts.map +1 -1
  26. package/lib/test/utilities/IdCompressorTestUtilities.js +1 -1
  27. package/lib/test/utilities/IdCompressorTestUtilities.js.map +1 -1
  28. package/lib/test/utilities/SummaryLoadPerfTests.js +1 -1
  29. package/lib/test/utilities/SummaryLoadPerfTests.js.map +1 -1
  30. package/lib/test/utilities/TestUtilities.js +1 -1
  31. package/lib/test/utilities/TestUtilities.js.map +1 -1
  32. package/package.json +20 -20
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  import { benchmark, BenchmarkType } from '@fluid-tools/benchmark';
6
- import { makeRandom } from '@fluid-internal/stochastic-test-utils';
6
+ import { makeRandom } from '@fluid-private/stochastic-test-utils';
7
7
  import { compareFiniteNumbers } from '../Common';
8
8
  import { AppendOnlySortedMap } from '../id-compressor/AppendOnlySortedMap';
9
9
  function runAppendOnlyMapPerfTests(mapBuilder) {
@@ -1 +1 @@
1
- {"version":3,"file":"AppendOnlySortedMap.perf.tests.js","sourceRoot":"","sources":["../../src/test/AppendOnlySortedMap.perf.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAW,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,SAAS,yBAAyB,CAAC,UAAqD;IACvF,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC;IACvC,IAAI,GAAwC,CAAC;IAC7C,IAAI,IAAa,CAAC;IAClB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QACtB,GAAG,GAAG,UAAU,EAAE,CAAC;QACnB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAChC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QACD,WAAW,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,SAAS,CAAC;QACT,IAAI;QACJ,KAAK,EAAE,cAAc;QACrB,MAAM;QACN,WAAW,EAAE,GAAG,EAAE;YACjB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;KACD,CAAC,CAAC;IAEH,SAAS,CAAC;QACT,IAAI;QACJ,KAAK,EAAE,wBAAwB;QAC/B,MAAM;QACN,WAAW,EAAE,GAAG,EAAE;YACjB,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACzC,yBAAyB,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { benchmark, BenchmarkType } from '@fluid-tools/benchmark';\nimport { IRandom, makeRandom } from '@fluid-internal/stochastic-test-utils';\nimport { compareFiniteNumbers } from '../Common';\nimport { AppendOnlySortedMap } from '../id-compressor/AppendOnlySortedMap';\n\nfunction runAppendOnlyMapPerfTests(mapBuilder: () => AppendOnlySortedMap<number, number>) {\n\tconst type = BenchmarkType.Measurement;\n\tlet map: AppendOnlySortedMap<number, number>;\n\tlet rand: IRandom;\n\tconst keyChoices: number[] = [];\n\tlet localChoice = 0;\n\tconst before = () => {\n\t\trand = makeRandom(42);\n\t\tmap = mapBuilder();\n\t\tlet curKey = 0;\n\t\tfor (let i = 0; i < 100000; i++) {\n\t\t\tmap.append(curKey, rand.integer(0, Number.MAX_SAFE_INTEGER));\n\t\t\tcurKey += rand.integer(1, 10);\n\t\t}\n\t\tconst keys = [...map.keys()];\n\t\tfor (let i = 0; i < map.size; i++) {\n\t\t\tkeyChoices.push(keys[rand.integer(0, map.size - 1)]);\n\t\t}\n\t\tlocalChoice = 0;\n\t};\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `lookup a key`,\n\t\tbefore,\n\t\tbenchmarkFn: () => {\n\t\t\tmap.get(keyChoices[localChoice++ % keyChoices.length]);\n\t\t},\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `lookup a pair or lower`,\n\t\tbefore,\n\t\tbenchmarkFn: () => {\n\t\t\tmap.getPairOrNextLower(keyChoices[localChoice++ % keyChoices.length]);\n\t\t},\n\t});\n}\n\ndescribe('AppendOnlySortedMap Perf', () => {\n\trunAppendOnlyMapPerfTests(() => new AppendOnlySortedMap(compareFiniteNumbers));\n});\n"]}
1
+ {"version":3,"file":"AppendOnlySortedMap.perf.tests.js","sourceRoot":"","sources":["../../src/test/AppendOnlySortedMap.perf.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAW,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,SAAS,yBAAyB,CAAC,UAAqD;IACvF,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC;IACvC,IAAI,GAAwC,CAAC;IAC7C,IAAI,IAAa,CAAC;IAClB,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QACtB,GAAG,GAAG,UAAU,EAAE,CAAC;QACnB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAChC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7D,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAClC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;QACD,WAAW,GAAG,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,SAAS,CAAC;QACT,IAAI;QACJ,KAAK,EAAE,cAAc;QACrB,MAAM;QACN,WAAW,EAAE,GAAG,EAAE;YACjB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;KACD,CAAC,CAAC;IAEH,SAAS,CAAC;QACT,IAAI;QACJ,KAAK,EAAE,wBAAwB;QAC/B,MAAM;QACN,WAAW,EAAE,GAAG,EAAE;YACjB,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACzC,yBAAyB,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { benchmark, BenchmarkType } from '@fluid-tools/benchmark';\nimport { IRandom, makeRandom } from '@fluid-private/stochastic-test-utils';\nimport { compareFiniteNumbers } from '../Common';\nimport { AppendOnlySortedMap } from '../id-compressor/AppendOnlySortedMap';\n\nfunction runAppendOnlyMapPerfTests(mapBuilder: () => AppendOnlySortedMap<number, number>) {\n\tconst type = BenchmarkType.Measurement;\n\tlet map: AppendOnlySortedMap<number, number>;\n\tlet rand: IRandom;\n\tconst keyChoices: number[] = [];\n\tlet localChoice = 0;\n\tconst before = () => {\n\t\trand = makeRandom(42);\n\t\tmap = mapBuilder();\n\t\tlet curKey = 0;\n\t\tfor (let i = 0; i < 100000; i++) {\n\t\t\tmap.append(curKey, rand.integer(0, Number.MAX_SAFE_INTEGER));\n\t\t\tcurKey += rand.integer(1, 10);\n\t\t}\n\t\tconst keys = [...map.keys()];\n\t\tfor (let i = 0; i < map.size; i++) {\n\t\t\tkeyChoices.push(keys[rand.integer(0, map.size - 1)]);\n\t\t}\n\t\tlocalChoice = 0;\n\t};\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `lookup a key`,\n\t\tbefore,\n\t\tbenchmarkFn: () => {\n\t\t\tmap.get(keyChoices[localChoice++ % keyChoices.length]);\n\t\t},\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `lookup a pair or lower`,\n\t\tbefore,\n\t\tbenchmarkFn: () => {\n\t\t\tmap.getPairOrNextLower(keyChoices[localChoice++ % keyChoices.length]);\n\t\t},\n\t});\n}\n\ndescribe('AppendOnlySortedMap Perf', () => {\n\trunAppendOnlyMapPerfTests(() => new AppendOnlySortedMap(compareFiniteNumbers));\n});\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { strict as assert } from 'assert';
6
6
  import { TestObjectProvider, TestFluidObjectFactory, createContainerRuntimeFactoryWithDefaultDataStore, } from '@fluidframework/test-utils';
7
- import { LocalServerTestDriver } from '@fluid-internal/test-drivers';
7
+ import { LocalServerTestDriver } from '@fluid-private/test-drivers';
8
8
  import { Loader } from '@fluidframework/container-loader';
9
9
  import { SharedTree } from '../SharedTree';
10
10
  import { Change, StablePlace } from '../ChangeTypes';
@@ -1 +1 @@
1
- {"version":3,"file":"Attach.tests.js","sourceRoot":"","sources":["../../src/test/Attach.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EACN,kBAAkB,EAElB,sBAAsB,EAEtB,iDAAiD,GACjD,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGhE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,MAAM,iBAAiB,GAAG,KAAK,EAAE,gBAAqB,EAAwB,EAAE;QAC/E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SAChE;QACD,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;IAC5C,MAAM,iBAAiB,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,iDAAiD,CAAC,SAAS,EAAE;QACnF,cAAc,EAAE,iBAAiB;QACjC,eAAe,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/E,iBAAiB;KACjB,CAAC,CAAC;IAEH,IAAI,QAA6B,CAAC;IAClC,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC3C,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,aAAa,EAAE,CAAqB,CAAC;QACtE,MAAM,UAAU,GAAG,YAA0B,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAe,CAAC;QAClF,MAAM,aAAa,GAAc;YAChC,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACP,QAAQ,EAAE;oBACT,UAAU,EAAE,UAAU;oBACtB,OAAO,EAAE,CAAC;iBACV;aACD;SACD,CAAC;QACF,IAAI,CAAC,SAAS,CACb,MAAM,CAAC,UAAU,CAChB,aAAa,EACb,WAAW,CAAC,SAAS,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,KAAK,EAAE,UAAU;SACjB,CAAC,CACF,CACD,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACrF,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from 'assert';\nimport {\n\tTestObjectProvider,\n\ttype ITestObjectProvider,\n\tTestFluidObjectFactory,\n\tITestFluidObject,\n\tcreateContainerRuntimeFactoryWithDefaultDataStore,\n} from '@fluidframework/test-utils';\nimport { LocalServerTestDriver } from '@fluid-internal/test-drivers';\nimport { Loader } from '@fluidframework/container-loader';\nimport { FluidObject } from '@fluidframework/core-interfaces';\nimport { SharedTree } from '../SharedTree';\nimport { BuildNode, Change, StablePlace } from '../ChangeTypes';\nimport { TraitLabel } from '../Identifiers';\n\ndescribe('Attach Tests', () => {\n\tconst provideEntryPoint = async (containerRuntime: any): Promise<FluidObject> => {\n\t\tconst handle = await containerRuntime.getAliasedDataStoreEntryPoint('default');\n\t\tif (handle === undefined) {\n\t\t\tthrow new Error('Could not get default data store entry point');\n\t\t}\n\t\treturn handle.get();\n\t};\n\n\tconst treeFactory = SharedTree.getFactory();\n\tconst dataObjectFactory = new TestFluidObjectFactory([['tree', treeFactory]]);\n\tconst runtimeFactory = createContainerRuntimeFactoryWithDefaultDataStore(undefined, {\n\t\tdefaultFactory: dataObjectFactory,\n\t\tregistryEntries: [[dataObjectFactory.type, Promise.resolve(dataObjectFactory)]],\n\t\tprovideEntryPoint,\n\t});\n\n\tlet provider: ITestObjectProvider;\n\tit('Tree can be attached with local changes after the datastore is attached', async () => {\n\t\tconst driver = new LocalServerTestDriver();\n\t\tprovider = new TestObjectProvider(Loader, driver, () => runtimeFactory);\n\t\tconst container = await provider.createContainer(runtimeFactory);\n\t\tconst testObj = (await container.getEntryPoint()) as ITestFluidObject;\n\t\tconst someNodeId = 'someNodeId' as TraitLabel;\n\t\tconst tree = testObj.runtime.createChannel('abc', treeFactory.type) as SharedTree;\n\t\tconst inventoryNode: BuildNode = {\n\t\t\tdefinition: someNodeId,\n\t\t\ttraits: {\n\t\t\t\tquantity: {\n\t\t\t\t\tdefinition: 'quantity',\n\t\t\t\t\tpayload: 5,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\ttree.applyEdit(\n\t\t\tChange.insertTree(\n\t\t\t\tinventoryNode,\n\t\t\t\tStablePlace.atStartOf({\n\t\t\t\t\tparent: tree.currentView.root,\n\t\t\t\t\tlabel: someNodeId,\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t\tassert.doesNotThrow(() => testObj.root.set('any', tree.handle), \"Can't attach tree\");\n\t\tawait provider.ensureSynchronized();\n\t\tprovider.reset();\n\t});\n});\n"]}
1
+ {"version":3,"file":"Attach.tests.js","sourceRoot":"","sources":["../../src/test/Attach.tests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EACN,kBAAkB,EAElB,sBAAsB,EAEtB,iDAAiD,GACjD,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAa,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGhE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,MAAM,iBAAiB,GAAG,KAAK,EAAE,gBAAqB,EAAwB,EAAE;QAC/E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SAChE;QACD,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;IAC5C,MAAM,iBAAiB,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,iDAAiD,CAAC,SAAS,EAAE;QACnF,cAAc,EAAE,iBAAiB;QACjC,eAAe,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/E,iBAAiB;KACjB,CAAC,CAAC;IAEH,IAAI,QAA6B,CAAC;IAClC,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC3C,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,CAAC,MAAM,SAAS,CAAC,aAAa,EAAE,CAAqB,CAAC;QACtE,MAAM,UAAU,GAAG,YAA0B,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAe,CAAC;QAClF,MAAM,aAAa,GAAc;YAChC,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE;gBACP,QAAQ,EAAE;oBACT,UAAU,EAAE,UAAU;oBACtB,OAAO,EAAE,CAAC;iBACV;aACD;SACD,CAAC;QACF,IAAI,CAAC,SAAS,CACb,MAAM,CAAC,UAAU,CAChB,aAAa,EACb,WAAW,CAAC,SAAS,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,KAAK,EAAE,UAAU;SACjB,CAAC,CACF,CACD,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACrF,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QACpC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from 'assert';\nimport {\n\tTestObjectProvider,\n\ttype ITestObjectProvider,\n\tTestFluidObjectFactory,\n\tITestFluidObject,\n\tcreateContainerRuntimeFactoryWithDefaultDataStore,\n} from '@fluidframework/test-utils';\nimport { LocalServerTestDriver } from '@fluid-private/test-drivers';\nimport { Loader } from '@fluidframework/container-loader';\nimport { FluidObject } from '@fluidframework/core-interfaces';\nimport { SharedTree } from '../SharedTree';\nimport { BuildNode, Change, StablePlace } from '../ChangeTypes';\nimport { TraitLabel } from '../Identifiers';\n\ndescribe('Attach Tests', () => {\n\tconst provideEntryPoint = async (containerRuntime: any): Promise<FluidObject> => {\n\t\tconst handle = await containerRuntime.getAliasedDataStoreEntryPoint('default');\n\t\tif (handle === undefined) {\n\t\t\tthrow new Error('Could not get default data store entry point');\n\t\t}\n\t\treturn handle.get();\n\t};\n\n\tconst treeFactory = SharedTree.getFactory();\n\tconst dataObjectFactory = new TestFluidObjectFactory([['tree', treeFactory]]);\n\tconst runtimeFactory = createContainerRuntimeFactoryWithDefaultDataStore(undefined, {\n\t\tdefaultFactory: dataObjectFactory,\n\t\tregistryEntries: [[dataObjectFactory.type, Promise.resolve(dataObjectFactory)]],\n\t\tprovideEntryPoint,\n\t});\n\n\tlet provider: ITestObjectProvider;\n\tit('Tree can be attached with local changes after the datastore is attached', async () => {\n\t\tconst driver = new LocalServerTestDriver();\n\t\tprovider = new TestObjectProvider(Loader, driver, () => runtimeFactory);\n\t\tconst container = await provider.createContainer(runtimeFactory);\n\t\tconst testObj = (await container.getEntryPoint()) as ITestFluidObject;\n\t\tconst someNodeId = 'someNodeId' as TraitLabel;\n\t\tconst tree = testObj.runtime.createChannel('abc', treeFactory.type) as SharedTree;\n\t\tconst inventoryNode: BuildNode = {\n\t\t\tdefinition: someNodeId,\n\t\t\ttraits: {\n\t\t\t\tquantity: {\n\t\t\t\t\tdefinition: 'quantity',\n\t\t\t\t\tpayload: 5,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\ttree.applyEdit(\n\t\t\tChange.insertTree(\n\t\t\t\tinventoryNode,\n\t\t\t\tStablePlace.atStartOf({\n\t\t\t\t\tparent: tree.currentView.root,\n\t\t\t\t\tlabel: someNodeId,\n\t\t\t\t})\n\t\t\t)\n\t\t);\n\t\tassert.doesNotThrow(() => testObj.root.set('any', tree.handle), \"Can't attach tree\");\n\t\tawait provider.ensureSynchronized();\n\t\tprovider.reset();\n\t});\n});\n"]}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
6
6
  import { benchmark, BenchmarkType } from '@fluid-tools/benchmark';
7
- import { take } from '@fluid-internal/stochastic-test-utils';
7
+ import { take } from '@fluid-private/stochastic-test-utils';
8
8
  import { fail } from '../Common';
9
9
  import { defaultClusterCapacity, IdCompressor, isFinalId, isLocalId } from '../id-compressor/IdCompressor';
10
10
  import { createSessionId, numericUuidFromStableId, stableIdFromNumericUuid } from '../id-compressor/NumericUuid';
@@ -1 +1 @@
1
- {"version":3,"file":"IdCompressor.perf.tests.js","sourceRoot":"","sources":["../../src/test/IdCompressor.perf.tests.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { benchmark, BenchmarkType } from '@fluid-tools/benchmark';\nimport { take } from '@fluid-internal/stochastic-test-utils';\nimport { fail, Mutable } from '../Common';\nimport { defaultClusterCapacity, IdCompressor, isFinalId, isLocalId } from '../id-compressor/IdCompressor';\nimport { IdCreationRange, UnackedLocalId, SerializedIdCompressorWithNoSession } from '../id-compressor';\nimport { createSessionId, numericUuidFromStableId, stableIdFromNumericUuid } from '../id-compressor/NumericUuid';\nimport { CompressedId, FinalCompressedId, LocalCompressedId, OpSpaceCompressedId, SessionId } from '../Identifiers';\nimport {\n\tClient,\n\tIdCompressorTestNetwork,\n\tmakeOpGenerator,\n\tperformFuzzActions,\n\tsessionIds,\n\tTestIdData,\n} from './utilities/IdCompressorTestUtilities';\n\ndescribe('IdCompressor Perf', () => {\n\tconst type = BenchmarkType.Measurement;\n\tconst localClient = Client.Client1;\n\tconst remoteClient = Client.Client2;\n\tlet perfCompressor: IdCompressor | undefined;\n\tlet network: IdCompressorTestNetwork;\n\tlet compressor: IdCompressor;\n\n\tfunction setupCompressors(\n\t\tclusterSize: number,\n\t\tallowLocal: boolean,\n\t\tincludeOverrides: boolean\n\t): IdCompressorTestNetwork {\n\t\tnetwork = new IdCompressorTestNetwork(clusterSize);\n\t\t[compressor] = createPerfCompressor(network, allowLocal, includeOverrides, localClient);\n\t\tperfCompressor = undefined;\n\t\treturn network;\n\t}\n\n\tfunction createPerfCompressor(\n\t\tnetwork: IdCompressorTestNetwork,\n\t\tallowLocal: boolean,\n\t\tincludeOverrides: boolean,\n\t\tclient: Client\n\t): [IdCompressor, readonly TestIdData[]] {\n\t\tconst maxClusterSize = 25;\n\t\tconst generator = take(1000, makeOpGenerator({ includeOverrides, validateInterval: 2000, maxClusterSize }));\n\t\tif (network.initialClusterSize > maxClusterSize) {\n\t\t\tnetwork.enqueueCapacityChange(maxClusterSize);\n\t\t}\n\t\tperformFuzzActions(generator, network, Math.E, allowLocal ? undefined : client, !allowLocal);\n\t\treturn [network.getCompressorUnsafe(client), network.getIdLog(client)];\n\t}\n\n\tfunction setupCompressorWithId(local: boolean, override: boolean, clusterHasOtherOverrides: boolean): CompressedId {\n\t\tconst clusterCapacity = defaultClusterCapacity;\n\t\tconst network = setupCompressors(clusterCapacity, true, true);\n\t\tif (!clusterHasOtherOverrides) {\n\t\t\tnetwork.allocateAndSendIds(localClient, clusterCapacity);\n\t\t} else {\n\t\t\tnetwork.allocateAndSendIds(localClient, 2, {\n\t\t\t\t0: 'override1',\n\t\t\t\t1: 'override2',\n\t\t\t});\n\t\t}\n\t\tif (override) {\n\t\t\tnetwork.allocateAndSendIds(localClient, 1, { 0: 'override3' });\n\t\t} else {\n\t\t\tnetwork.allocateAndSendIds(localClient, 1);\n\t\t}\n\n\t\tif (!local) {\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t}\n\n\t\tconst ids = network.getIdLog(localClient);\n\t\tconst lastId = ids[ids.length - 1].id;\n\t\treturn lastId;\n\t}\n\n\tfunction benchmarkWithIdTypes(creator: (local: boolean, override: boolean, titleSuffix: string) => void) {\n\t\tfor (const local of [true, false]) {\n\t\t\tfor (const override of [true, false]) {\n\t\t\t\tconst titleSuffix = ` (${override ? 'override' : 'sequential'})`;\n\t\t\t\tcreator(local, override, titleSuffix);\n\t\t\t}\n\t\t}\n\t}\n\n\t[true, false].forEach((override) => {\n\t\tconst numericSource = numericUuidFromStableId(createSessionId());\n\t\tlet overrideIndex = 0;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `allocate local ID (${override ? 'override' : 'sequential'})`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(defaultClusterCapacity, true, false);\n\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.generateCompressedId(\n\t\t\t\t\toverride ? stableIdFromNumericUuid(numericSource, overrideIndex++) : undefined\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t});\n\n\t[true, false].forEach((override) => {\n\t\tfor (const clusterSize of [1, 10, 500, 1000]) {\n\t\t\tconst overrideCount = 3;\n\t\t\tconst numIds = 7;\n\t\t\tconst session1 = '8150a099-5302-4672-b5f3-7a4492b59418' as SessionId;\n\t\t\tconst session2 = 'f2ded886-92da-4248-967b-eb96ee04cf51' as SessionId;\n\t\t\tlet session: SessionId = session1;\n\t\t\tlet lastFinalizedLocalId1 = 0 as LocalCompressedId;\n\t\t\tlet lastFinalizedLocalId2 = 0 as LocalCompressedId;\n\t\t\tlet overrideIndex = 0;\n\t\t\tbenchmark({\n\t\t\t\ttype,\n\t\t\t\ttitle: `finalize a range of IDs (cluster size =${clusterSize}${override ? ', overrides present' : ''})`,\n\t\t\t\tbefore: () => {\n\t\t\t\t\tsetupCompressors(clusterSize, false, false);\n\t\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t\t},\n\t\t\t\tbenchmarkFn: () => {\n\t\t\t\t\t// Create a range with as minimal overhead as possible, as we'd like for this code to not exist\n\t\t\t\t\t// in the timing loop at all (but benchmark forces us to do so)\n\t\t\t\t\tconst isLocal = session === session1;\n\t\t\t\t\tconst first = ((isLocal ? lastFinalizedLocalId1 : lastFinalizedLocalId2) - 1) as LocalCompressedId &\n\t\t\t\t\t\tOpSpaceCompressedId;\n\t\t\t\t\tlet overrides: Mutable<IdCreationRange.Overrides> | undefined;\n\t\t\t\t\tconst actualOverrideCount = override ? overrideCount : 0;\n\t\t\t\t\tif (actualOverrideCount > 0) {\n\t\t\t\t\t\toverrides = [] as unknown as Mutable<IdCreationRange.Overrides>;\n\t\t\t\t\t\tfor (let i = 0; i < actualOverrideCount; i++) {\n\t\t\t\t\t\t\toverrides.push([\n\t\t\t\t\t\t\t\t(first - i) as LocalCompressedId & OpSpaceCompressedId,\n\t\t\t\t\t\t\t\t`override${overrideIndex++}`,\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst last = (first - numIds) as UnackedLocalId;\n\t\t\t\t\tconst range: IdCreationRange = {\n\t\t\t\t\t\tsessionId: session,\n\t\t\t\t\t\tids: {\n\t\t\t\t\t\t\tfirst,\n\t\t\t\t\t\t\tlast,\n\t\t\t\t\t\t\toverrides,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tperfCompressor!.finalizeCreationRange(range);\n\n\t\t\t\t\tif (isLocal) {\n\t\t\t\t\t\tlastFinalizedLocalId1 = last;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlastFinalizedLocalId2 = last;\n\t\t\t\t\t}\n\t\t\t\t\t// Alternate clients to sidestep optimization that packs them all into last cluster\n\t\t\t\t\tsession = isLocal ? session1 : session2;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `takes a ID creation range'})`,\n\t\tbefore: () => {\n\t\t\tsetupCompressors(defaultClusterCapacity, true, false);\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t\tperfCompressor!.takeNextCreationRange();\n\t\t},\n\t});\n\n\tbenchmarkWithIdTypes((local, override, titleSuffix) => {\n\t\tlet idToDecompress!: CompressedId;\n\t\tconst before = () => {\n\t\t\tidToDecompress = setupCompressorWithId(local, override, true);\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t};\n\t\tconst benchmarkFn = () => {\n\t\t\tperfCompressor!.decompress(idToDecompress);\n\t\t};\n\t\tif (local) {\n\t\t\tbenchmark({\n\t\t\t\ttype,\n\t\t\t\ttitle: `decompress local ID into stable IDs${titleSuffix}`,\n\t\t\t\tbefore,\n\t\t\t\tbenchmarkFn,\n\t\t\t});\n\t\t} else {\n\t\t\tconst titleBase = 'decompress final ID into stable IDs';\n\t\t\tif (override) {\n\t\t\t\tbenchmark({\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: titleBase + titleSuffix,\n\t\t\t\t\tbefore,\n\t\t\t\t\tbenchmarkFn,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (const clusterHasOverride of [true, false]) {\n\t\t\t\t\tbenchmark({\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\ttitle: `${titleBase} (sequential, overrides ${\n\t\t\t\t\t\t\tclusterHasOverride ? 'present' : 'not present'\n\t\t\t\t\t\t} in owning cluster)`,\n\t\t\t\t\t\tbefore: () => {\n\t\t\t\t\t\t\tidToDecompress = setupCompressorWithId(local, override, clusterHasOverride);\n\t\t\t\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbenchmarkFn,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tbenchmarkWithIdTypes((local, override, titleSuffix) => {\n\t\tlet stableToCompress!: string;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `compress a stable ID to a ${local ? 'local' : 'final'} ID${titleSuffix}`,\n\t\t\tbefore: () => {\n\t\t\t\tconst idAdded = setupCompressorWithId(local, override, true);\n\t\t\t\tstableToCompress = compressor.decompress(idAdded);\n\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.recompress(stableToCompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet final!: FinalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a final ID from the local session to session space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(defaultClusterCapacity, true, true);\n\t\t\tnetwork.allocateAndSendIds(localClient, 1);\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t\tconst log = network.getSequencedIdLog(localClient);\n\t\t\tconst id = compressor.normalizeToOpSpace(log[log.length - 1].id);\n\t\t\tfinal = isFinalId(id) ? id : fail('not a final ID');\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToSessionSpace(final, compressor.localSessionId);\n\t\t},\n\t});\n\n\tfunction getLastLocalId(client: Client, network: IdCompressorTestNetwork): LocalCompressedId {\n\t\tconst log = network.getIdLog(client);\n\t\tfor (let i = log.length - 1; i > 0; i--) {\n\t\t\tconst cur = log[i].id;\n\t\t\tif (isLocalId(cur)) {\n\t\t\t\treturn cur;\n\t\t\t}\n\t\t}\n\t\tfail('no local ID found in log');\n\t}\n\n\tlet localId!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a local ID from the local session to session space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(defaultClusterCapacity, true, true);\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t\tlocalId = getLastLocalId(localClient, network);\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToOpSpace(localId);\n\t\t},\n\t});\n\n\tconst remoteSessionId = sessionIds.get(remoteClient);\n\tlet opSpaceId: OpSpaceCompressedId | undefined;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a local ID from a remote session to session space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(defaultClusterCapacity, true, true);\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t\topSpaceId = getLastLocalId(remoteClient, network) as OpSpaceCompressedId;\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId ?? fail(), remoteSessionId);\n\t\t},\n\t});\n\n\tfor (const overrideInClusters of [true, false]) {\n\t\tconst titleSuffix = ` (${overrideInClusters ? 'with' : 'without'} overrides)`;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `serialize an IdCompressor${titleSuffix}`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(defaultClusterCapacity, false, overrideInClusters);\n\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.serialize(false);\n\t\t\t},\n\t\t});\n\n\t\tlet serialized!: SerializedIdCompressorWithNoSession;\n\t\tconst remoteSessionId = createSessionId();\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `deserialize an IdCompressor${titleSuffix}`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(defaultClusterCapacity, false, overrideInClusters);\n\t\t\t\tserialized = compressor.serialize(false);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tIdCompressor.deserialize(serialized, remoteSessionId);\n\t\t\t},\n\t\t});\n\t}\n});\n"]}
1
+ {"version":3,"file":"IdCompressor.perf.tests.js","sourceRoot":"","sources":["../../src/test/IdCompressor.perf.tests.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { benchmark, BenchmarkType } from '@fluid-tools/benchmark';\nimport { take } from '@fluid-private/stochastic-test-utils';\nimport { fail, Mutable } from '../Common';\nimport { defaultClusterCapacity, IdCompressor, isFinalId, isLocalId } from '../id-compressor/IdCompressor';\nimport { IdCreationRange, UnackedLocalId, SerializedIdCompressorWithNoSession } from '../id-compressor';\nimport { createSessionId, numericUuidFromStableId, stableIdFromNumericUuid } from '../id-compressor/NumericUuid';\nimport { CompressedId, FinalCompressedId, LocalCompressedId, OpSpaceCompressedId, SessionId } from '../Identifiers';\nimport {\n\tClient,\n\tIdCompressorTestNetwork,\n\tmakeOpGenerator,\n\tperformFuzzActions,\n\tsessionIds,\n\tTestIdData,\n} from './utilities/IdCompressorTestUtilities';\n\ndescribe('IdCompressor Perf', () => {\n\tconst type = BenchmarkType.Measurement;\n\tconst localClient = Client.Client1;\n\tconst remoteClient = Client.Client2;\n\tlet perfCompressor: IdCompressor | undefined;\n\tlet network: IdCompressorTestNetwork;\n\tlet compressor: IdCompressor;\n\n\tfunction setupCompressors(\n\t\tclusterSize: number,\n\t\tallowLocal: boolean,\n\t\tincludeOverrides: boolean\n\t): IdCompressorTestNetwork {\n\t\tnetwork = new IdCompressorTestNetwork(clusterSize);\n\t\t[compressor] = createPerfCompressor(network, allowLocal, includeOverrides, localClient);\n\t\tperfCompressor = undefined;\n\t\treturn network;\n\t}\n\n\tfunction createPerfCompressor(\n\t\tnetwork: IdCompressorTestNetwork,\n\t\tallowLocal: boolean,\n\t\tincludeOverrides: boolean,\n\t\tclient: Client\n\t): [IdCompressor, readonly TestIdData[]] {\n\t\tconst maxClusterSize = 25;\n\t\tconst generator = take(1000, makeOpGenerator({ includeOverrides, validateInterval: 2000, maxClusterSize }));\n\t\tif (network.initialClusterSize > maxClusterSize) {\n\t\t\tnetwork.enqueueCapacityChange(maxClusterSize);\n\t\t}\n\t\tperformFuzzActions(generator, network, Math.E, allowLocal ? undefined : client, !allowLocal);\n\t\treturn [network.getCompressorUnsafe(client), network.getIdLog(client)];\n\t}\n\n\tfunction setupCompressorWithId(local: boolean, override: boolean, clusterHasOtherOverrides: boolean): CompressedId {\n\t\tconst clusterCapacity = defaultClusterCapacity;\n\t\tconst network = setupCompressors(clusterCapacity, true, true);\n\t\tif (!clusterHasOtherOverrides) {\n\t\t\tnetwork.allocateAndSendIds(localClient, clusterCapacity);\n\t\t} else {\n\t\t\tnetwork.allocateAndSendIds(localClient, 2, {\n\t\t\t\t0: 'override1',\n\t\t\t\t1: 'override2',\n\t\t\t});\n\t\t}\n\t\tif (override) {\n\t\t\tnetwork.allocateAndSendIds(localClient, 1, { 0: 'override3' });\n\t\t} else {\n\t\t\tnetwork.allocateAndSendIds(localClient, 1);\n\t\t}\n\n\t\tif (!local) {\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t}\n\n\t\tconst ids = network.getIdLog(localClient);\n\t\tconst lastId = ids[ids.length - 1].id;\n\t\treturn lastId;\n\t}\n\n\tfunction benchmarkWithIdTypes(creator: (local: boolean, override: boolean, titleSuffix: string) => void) {\n\t\tfor (const local of [true, false]) {\n\t\t\tfor (const override of [true, false]) {\n\t\t\t\tconst titleSuffix = ` (${override ? 'override' : 'sequential'})`;\n\t\t\t\tcreator(local, override, titleSuffix);\n\t\t\t}\n\t\t}\n\t}\n\n\t[true, false].forEach((override) => {\n\t\tconst numericSource = numericUuidFromStableId(createSessionId());\n\t\tlet overrideIndex = 0;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `allocate local ID (${override ? 'override' : 'sequential'})`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(defaultClusterCapacity, true, false);\n\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.generateCompressedId(\n\t\t\t\t\toverride ? stableIdFromNumericUuid(numericSource, overrideIndex++) : undefined\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t});\n\n\t[true, false].forEach((override) => {\n\t\tfor (const clusterSize of [1, 10, 500, 1000]) {\n\t\t\tconst overrideCount = 3;\n\t\t\tconst numIds = 7;\n\t\t\tconst session1 = '8150a099-5302-4672-b5f3-7a4492b59418' as SessionId;\n\t\t\tconst session2 = 'f2ded886-92da-4248-967b-eb96ee04cf51' as SessionId;\n\t\t\tlet session: SessionId = session1;\n\t\t\tlet lastFinalizedLocalId1 = 0 as LocalCompressedId;\n\t\t\tlet lastFinalizedLocalId2 = 0 as LocalCompressedId;\n\t\t\tlet overrideIndex = 0;\n\t\t\tbenchmark({\n\t\t\t\ttype,\n\t\t\t\ttitle: `finalize a range of IDs (cluster size =${clusterSize}${override ? ', overrides present' : ''})`,\n\t\t\t\tbefore: () => {\n\t\t\t\t\tsetupCompressors(clusterSize, false, false);\n\t\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t\t},\n\t\t\t\tbenchmarkFn: () => {\n\t\t\t\t\t// Create a range with as minimal overhead as possible, as we'd like for this code to not exist\n\t\t\t\t\t// in the timing loop at all (but benchmark forces us to do so)\n\t\t\t\t\tconst isLocal = session === session1;\n\t\t\t\t\tconst first = ((isLocal ? lastFinalizedLocalId1 : lastFinalizedLocalId2) - 1) as LocalCompressedId &\n\t\t\t\t\t\tOpSpaceCompressedId;\n\t\t\t\t\tlet overrides: Mutable<IdCreationRange.Overrides> | undefined;\n\t\t\t\t\tconst actualOverrideCount = override ? overrideCount : 0;\n\t\t\t\t\tif (actualOverrideCount > 0) {\n\t\t\t\t\t\toverrides = [] as unknown as Mutable<IdCreationRange.Overrides>;\n\t\t\t\t\t\tfor (let i = 0; i < actualOverrideCount; i++) {\n\t\t\t\t\t\t\toverrides.push([\n\t\t\t\t\t\t\t\t(first - i) as LocalCompressedId & OpSpaceCompressedId,\n\t\t\t\t\t\t\t\t`override${overrideIndex++}`,\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst last = (first - numIds) as UnackedLocalId;\n\t\t\t\t\tconst range: IdCreationRange = {\n\t\t\t\t\t\tsessionId: session,\n\t\t\t\t\t\tids: {\n\t\t\t\t\t\t\tfirst,\n\t\t\t\t\t\t\tlast,\n\t\t\t\t\t\t\toverrides,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tperfCompressor!.finalizeCreationRange(range);\n\n\t\t\t\t\tif (isLocal) {\n\t\t\t\t\t\tlastFinalizedLocalId1 = last;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlastFinalizedLocalId2 = last;\n\t\t\t\t\t}\n\t\t\t\t\t// Alternate clients to sidestep optimization that packs them all into last cluster\n\t\t\t\t\tsession = isLocal ? session1 : session2;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `takes a ID creation range'})`,\n\t\tbefore: () => {\n\t\t\tsetupCompressors(defaultClusterCapacity, true, false);\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t\tperfCompressor!.takeNextCreationRange();\n\t\t},\n\t});\n\n\tbenchmarkWithIdTypes((local, override, titleSuffix) => {\n\t\tlet idToDecompress!: CompressedId;\n\t\tconst before = () => {\n\t\t\tidToDecompress = setupCompressorWithId(local, override, true);\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t};\n\t\tconst benchmarkFn = () => {\n\t\t\tperfCompressor!.decompress(idToDecompress);\n\t\t};\n\t\tif (local) {\n\t\t\tbenchmark({\n\t\t\t\ttype,\n\t\t\t\ttitle: `decompress local ID into stable IDs${titleSuffix}`,\n\t\t\t\tbefore,\n\t\t\t\tbenchmarkFn,\n\t\t\t});\n\t\t} else {\n\t\t\tconst titleBase = 'decompress final ID into stable IDs';\n\t\t\tif (override) {\n\t\t\t\tbenchmark({\n\t\t\t\t\ttype,\n\t\t\t\t\ttitle: titleBase + titleSuffix,\n\t\t\t\t\tbefore,\n\t\t\t\t\tbenchmarkFn,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (const clusterHasOverride of [true, false]) {\n\t\t\t\t\tbenchmark({\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\ttitle: `${titleBase} (sequential, overrides ${\n\t\t\t\t\t\t\tclusterHasOverride ? 'present' : 'not present'\n\t\t\t\t\t\t} in owning cluster)`,\n\t\t\t\t\t\tbefore: () => {\n\t\t\t\t\t\t\tidToDecompress = setupCompressorWithId(local, override, clusterHasOverride);\n\t\t\t\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbenchmarkFn,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tbenchmarkWithIdTypes((local, override, titleSuffix) => {\n\t\tlet stableToCompress!: string;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `compress a stable ID to a ${local ? 'local' : 'final'} ID${titleSuffix}`,\n\t\t\tbefore: () => {\n\t\t\t\tconst idAdded = setupCompressorWithId(local, override, true);\n\t\t\t\tstableToCompress = compressor.decompress(idAdded);\n\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.recompress(stableToCompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet final!: FinalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a final ID from the local session to session space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(defaultClusterCapacity, true, true);\n\t\t\tnetwork.allocateAndSendIds(localClient, 1);\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t\tconst log = network.getSequencedIdLog(localClient);\n\t\t\tconst id = compressor.normalizeToOpSpace(log[log.length - 1].id);\n\t\t\tfinal = isFinalId(id) ? id : fail('not a final ID');\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToSessionSpace(final, compressor.localSessionId);\n\t\t},\n\t});\n\n\tfunction getLastLocalId(client: Client, network: IdCompressorTestNetwork): LocalCompressedId {\n\t\tconst log = network.getIdLog(client);\n\t\tfor (let i = log.length - 1; i > 0; i--) {\n\t\t\tconst cur = log[i].id;\n\t\t\tif (isLocalId(cur)) {\n\t\t\t\treturn cur;\n\t\t\t}\n\t\t}\n\t\tfail('no local ID found in log');\n\t}\n\n\tlet localId!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a local ID from the local session to session space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(defaultClusterCapacity, true, true);\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t\tlocalId = getLastLocalId(localClient, network);\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToOpSpace(localId);\n\t\t},\n\t});\n\n\tconst remoteSessionId = sessionIds.get(remoteClient);\n\tlet opSpaceId: OpSpaceCompressedId | undefined;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize a local ID from a remote session to session space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(defaultClusterCapacity, true, true);\n\t\t\tnetwork.deliverOperations(localClient);\n\t\t\topSpaceId = getLastLocalId(remoteClient, network) as OpSpaceCompressedId;\n\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId ?? fail(), remoteSessionId);\n\t\t},\n\t});\n\n\tfor (const overrideInClusters of [true, false]) {\n\t\tconst titleSuffix = ` (${overrideInClusters ? 'with' : 'without'} overrides)`;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `serialize an IdCompressor${titleSuffix}`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(defaultClusterCapacity, false, overrideInClusters);\n\t\t\t\tperfCompressor = network.getCompressorUnsafeNoProxy(localClient);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.serialize(false);\n\t\t\t},\n\t\t});\n\n\t\tlet serialized!: SerializedIdCompressorWithNoSession;\n\t\tconst remoteSessionId = createSessionId();\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `deserialize an IdCompressor${titleSuffix}`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(defaultClusterCapacity, false, overrideInClusters);\n\t\t\t\tserialized = compressor.serialize(false);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tIdCompressor.deserialize(serialized, remoteSessionId);\n\t\t\t},\n\t\t});\n\t}\n});\n"]}
@@ -6,7 +6,7 @@ import { strict as assert } from 'assert';
6
6
  import { expect } from 'chai';
7
7
  import { v4, v5 } from 'uuid';
8
8
  import { MockLogger } from '@fluidframework/telemetry-utils';
9
- import { take } from '@fluid-internal/stochastic-test-utils';
9
+ import { take } from '@fluid-private/stochastic-test-utils';
10
10
  import { validateAssertionError } from '@fluidframework/test-runtime-utils';
11
11
  import { IdCompressor, isFinalId, isLocalId, hasOngoingSession, legacySharedTreeInitialTreeId, } from '../id-compressor/IdCompressor';
12
12
  import { assertNotUndefined, fail } from '../Common';