From 9850c39fc25d2a1cc4d29060be6da6c491c7bb07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Le=C5=9Bniak?= Date: Fri, 29 Dec 2023 11:21:13 +0100 Subject: [PATCH] RavenDB-21799 Add indexing errors to exception message --- test/SlowTests/Issues/RavenDB-21668.cs | 44 ++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/test/SlowTests/Issues/RavenDB-21668.cs b/test/SlowTests/Issues/RavenDB-21668.cs index 35739a215b26..7b100991f0ad 100644 --- a/test/SlowTests/Issues/RavenDB-21668.cs +++ b/test/SlowTests/Issues/RavenDB-21668.cs @@ -1,6 +1,10 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using System.Text; using FastTests; +using Raven.Client.Documents; +using Raven.Client.Documents.Session; using Tests.Infrastructure; using Xunit; using Xunit.Abstractions; @@ -83,14 +87,16 @@ public void Can_Query_Map_Reduce_Index() "group by Name, Tries[].ResultMessage " + "select Name, Tries[].ResultMessage as ResultMessage, sum(Data.Items[].TotalPrice) as Total"; - var results = session.Advanced.RawQuery(rql).ToList(); + var results = HandleQuery(store, session, rql); + Assert.Equal(0, results.Count); // expected - wrong rql will produce 0 results rql = "from 'Messages' " + "group by Name, Tries[].ResultMessage " + "select Name, Tries[].ResultMessage as ResultMessage, sum(Data[].Items[].TotalPrice) as Total"; - results = session.Advanced.RawQuery(rql).ToList(); + results = HandleQuery(store, session, rql); + Assert.Equal(1, results.Count); Assert.Equal("Initial", results[0].Name); Assert.Equal("Received", results[0].ResultMessage); @@ -100,7 +106,7 @@ public void Can_Query_Map_Reduce_Index() "group by Name, Data[].Items[].ProductName " + "select Name, Data[].Items[].ProductName as ProductName, sum(Data[].Items[].TotalPrice) as Total"; - var resultsSamePath = session.Advanced.RawQuery(rql).ToList(); + var resultsSamePath = HandleQuery(store, session, rql); Assert.Equal(4, resultsSamePath.Count); Assert.True(resultsSamePath.Select(x => x.Name).All(x => x == "Initial")); @@ -116,7 +122,7 @@ public void Can_Query_Map_Reduce_Index() "group by Name, Data[].Items[].ProductName " + "select Name, Data[].Items[].ProductName as ProductName, sum(Data[].Items[].InternalItem.TotalPrice) as Total"; - resultsSamePath = session.Advanced.RawQuery(rql).ToList(); + resultsSamePath = HandleQuery(store, session, rql); Assert.Equal(4, resultsSamePath.Count); Assert.True(resultsSamePath.Select(x => x.Name).All(x => x == "Initial")); @@ -132,7 +138,7 @@ public void Can_Query_Map_Reduce_Index() "group by Name, Numbers[] " + "select Name, Numbers[] as OriginalNumber, sum(Numbers) as Total"; - var numbersResult = session.Advanced.RawQuery(rql).ToList(); + var numbersResult = HandleQuery(store, session, rql); Assert.Equal(3, numbersResult.Count); Assert.True(numbersResult.Select(x => x.Name).All(x => x == "Initial")); @@ -146,6 +152,32 @@ public void Can_Query_Map_Reduce_Index() } } + private List HandleQuery(IDocumentStore store, IDocumentSession session, string rql) + { + try + { + var results = session.Advanced.RawQuery(rql).ToList(); + + return results; + } + catch (Exception e) + { + var indexErrorsList = Indexes.WaitForIndexingErrors(store); + + var sb = new StringBuilder(); + sb.AppendLine("Indexing errors:"); + + foreach (var indexErrors in indexErrorsList) + { + foreach (var indexingError in indexErrors.Errors) + { + sb.AppendLine(indexingError.Error); + } + } + + throw new InvalidOperationException(sb.ToString(), e); + } + } private class Message {