Advertisement
Guest User

Untitled

a guest
Sep 13th, 2021
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.55 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using Neo4j.Driver;
  6.  
  7. namespace RequestGenerator {
  8.     class Program {
  9.         static void Main(string[] args) {
  10.  
  11.             DBStressTest(11519, 11397);
  12.             Console.ReadKey();
  13.         }
  14.  
  15.         public static void DBStressTest(double box1Id, double box2Id) {
  16.             var query = $@"MATCH (n:Box)
  17.                             WHERE n.BoxId = $box1Id XOR n.BoxId = $box2Id
  18.                             RETURN n.BoxId limit 1";
  19.  
  20.             var local = "bolt://localhost";
  21.             var localToken = AuthTokens.Basic("neo4j", "password!");
  22.             var driver = GraphDatabase.Driver(local, localToken);
  23.  
  24.             var singleStarted = DateTime.UtcNow;
  25.  
  26.             Console.WriteLine($"::OPERATION STARTED::{singleStarted}");
  27.  
  28.             for (var index = 0; index < 10; index++) {
  29.                 var dict = new Dictionary<string, object>();
  30.                 dict.Add("box1Id", box1Id);
  31.                 dict.Add("box2Id", box2Id);
  32.                 var q = new Query(query, dict);
  33.                
  34.                 var started = DateTime.UtcNow;
  35.                 GetSingleAsync(driver, q).Wait();
  36.  
  37.                 var ended = DateTime.UtcNow;
  38.                 var timespan = ended - started;
  39.                 if (timespan > TimeSpan.FromSeconds(2)) {
  40.                     Console.WriteLine($"Slow query: {timespan}! Thread.CurrentThread {Thread.CurrentThread.ManagedThreadId}");
  41.                 } else {
  42.                     Console.WriteLine($"Nice performance: {timespan}! Thread.CurrentThread {Thread.CurrentThread.ManagedThreadId}");
  43.                 }
  44.             }
  45.             var singleThreadEnded = DateTime.UtcNow;
  46.  
  47.             Console.WriteLine($"SINGLE COMPLETED: {singleThreadEnded - singleStarted}!!!!");
  48.  
  49.  
  50.             Parallel.For(0, 10, index => {
  51.                 var dict = new Dictionary<string, object>();
  52.                 dict.Add("box1Id", box1Id);
  53.                 dict.Add("box2Id", box2Id);
  54.                 var q = new Query(query, dict);
  55.  
  56.                 var started = DateTime.UtcNow;
  57.                 GetSingleAsync(driver, q).Wait();
  58.  
  59.                 var ended = DateTime.UtcNow;
  60.                 var timespan = ended - started;
  61.                 if (timespan > TimeSpan.FromSeconds(2)) {
  62.                     Console.WriteLine($"Slow query: {timespan}! Thread.CurrentThread {Thread.CurrentThread.ManagedThreadId}");
  63.                 } else {
  64.                     Console.WriteLine($"Nice performance: {timespan}! Thread.CurrentThread {Thread.CurrentThread.ManagedThreadId}");
  65.                 }
  66.             });
  67.  
  68.             var parallelEnded = DateTime.UtcNow;
  69.             Console.WriteLine($"PARALLEL COMPLETED: {parallelEnded - singleThreadEnded}!!!!");
  70.         }
  71.  
  72.  
  73.         private static async Task<IRecord> GetSingleAsync(IDriver driver, Query query) {
  74.             using (var session = driver.AsyncSession(o => o.WithDatabase("neo4j").WithDefaultAccessMode(AccessMode.Read))) {
  75.                 var r = await session.RunAsync(query);
  76.                 return await r.SingleAsync();
  77.             }
  78.         }
  79.     }
  80. }
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement