MCPcopy Create free account
hub / github.com/apache/fory / AddCases

Method AddCases

benchmarks/csharp/Program.cs:369–437  ·  view source on GitHub ↗
(
        string dataType,
        TWrite value,
        BenchmarkOptions options,
        List<BenchmarkCase> cases,
        Func<TRead, TWrite, bool> validateMismatch)

Source from the content-addressed store, hash-verified

367 }
368
369 private static void AddCases<TWrite, TRead>(
370 string dataType,
371 TWrite value,
372 BenchmarkOptions options,
373 List<BenchmarkCase> cases,
374 Func<TRead, TWrite, bool> validateMismatch)
375 {
376 if (!options.IsDataEnabled(dataType))
377 {
378 return;
379 }
380
381 List<IBenchmarkSerializer<TWrite>> serializers = [];
382 if (options.IsSerializerEnabled("fory"))
383 {
384 if (options.SchemaMismatch)
385 {
386 serializers.Add(new ForySerializer<TWrite, TRead>(schemaMismatch: true));
387 }
388 else
389 {
390 serializers.Add(new ForySerializer<TWrite, TWrite>(schemaMismatch: false));
391 }
392 }
393
394 if (!options.SchemaMismatch && options.IsSerializerEnabled("protobuf"))
395 {
396 serializers.Add(new ProtobufSerializer<TWrite>());
397 }
398
399 if (!options.SchemaMismatch && options.IsSerializerEnabled("msgpack"))
400 {
401 serializers.Add(new MessagePackRuntimeSerializer<TWrite>());
402 }
403
404 foreach (IBenchmarkSerializer<TWrite> serializer in serializers)
405 {
406 byte[] payload = serializer.Serialize(value);
407 _sink = serializer.Deserialize(payload);
408 if (options.SchemaMismatch && serializer.Name == "fory")
409 {
410 if (_sink is not TRead decoded || !validateMismatch(decoded, value))
411 {
412 throw new InvalidOperationException(
413 $"Fory schema-mismatch validation failed for {dataType}");
414 }
415 }
416
417 cases.Add(new BenchmarkCase(
418 serializer.Name,
419 dataType,
420 "serialize",
421 payload.Length,
422 () =>
423 {
424 _sink = serializer.Serialize(value);
425 }));
426

Callers

nothing calls this directly

Calls 5

IsDataEnabledMethod · 0.80
IsSerializerEnabledMethod · 0.80
AddMethod · 0.45
SerializeMethod · 0.45
DeserializeMethod · 0.45

Tested by

no test coverage detected