public void SparqlRemoteEndpointMemoryLeak2() { //Do a GC before attempting the test GC.GetTotalMemory(true); //First off make sure to load some data into the some SparqlRemoteUpdateEndpoint updateEndpoint = RemoteEndpoints.GetUpdateEndpoint(); updateEndpoint.Update("DROP ALL"); int totalRuns = 10000; int subjects = 1000; int predicates = 10; //Loop over making queries to try and reproduce the memory leak for (int i = 1; i <= totalRuns; i++) { //Add new data each time around updateEndpoint.Update("INSERT DATA { <http://subject/" + (i % subjects) + "> <http://predicate/" + (i % predicates) + "> <http://object/" + i + "> . }"); SparqlRemoteEndpoint endpoint = RemoteEndpoints.GetQueryEndpoint(); SparqlParameterizedString queryString = new SparqlParameterizedString(); queryString.CommandText = "SELECT * WHERE { <http://subject/" + (i % 1000) + "> ?p ?o }"; ResultCountHandler handler = new ResultCountHandler(); endpoint.QueryWithResultSet(handler, queryString.ToString()); Assert.True(handler.Count >= 1 && handler.Count <= subjects, "Result Count " + handler.Count + " is not in expected range 1 <= x < " + (i % 1000)); if (i % 500 == 0) { Debug.WriteLine("Memory Usage after " + i + " Iterations: " + Process.GetCurrentProcess().PrivateMemorySize64); } } Debug.WriteLine("Memory Usage after " + totalRuns + " Iterations: " + Process.GetCurrentProcess().PrivateMemorySize64); }
public void SparqlRemoteEndpointResultCountHandler() { SparqlRemoteEndpoint endpoint = RemoteEndpoints.GetQueryEndpoint(); ResultCountHandler handler = new ResultCountHandler(); endpoint.QueryWithResultSet(handler, "SELECT * WHERE { { ?s ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } } }"); Console.WriteLine("Result Count: " + handler.Count); Assert.NotEqual(0, handler.Count); }
private void TestResultCountHandler(ISparqlQueryProcessor processor, String query) { SparqlQuery q = this._parser.ParseFromString(query); SparqlResultSet expected = processor.ProcessQuery(q) as SparqlResultSet; Assert.NotNull(expected); ResultCountHandler handler = new ResultCountHandler(); processor.ProcessQuery(null, handler, q); Assert.Equal(expected.Count, handler.Count); }
private void TestResultCountHandler(ISparqlQueryProcessor processor, String query) { SparqlQuery q = this._parser.ParseFromString(query); SparqlResultSet expected = processor.ProcessQuery(q) as SparqlResultSet; if (expected == null) { Assert.Fail("Query failed to return a Result Set as expected"); } ResultCountHandler handler = new ResultCountHandler(); processor.ProcessQuery(null, handler, q); Assert.AreEqual(expected.Count, handler.Count, "Counts should have been equal"); }