QPIDIT-89: Write single line to stderr on failure for better detection
Distinguish between 'not supported' and 'cannot decode' decimal types.
Throw only one error type.
diff --git a/shims/amqpnetlite/src/amqp_types_test/Receiver/Receiver.cs b/shims/amqpnetlite/src/amqp_types_test/Receiver/Receiver.cs
index 70f71e1..818bfe3 100644
--- a/shims/amqpnetlite/src/amqp_types_test/Receiver/Receiver.cs
+++ b/shims/amqpnetlite/src/amqp_types_test/Receiver/Receiver.cs
@@ -21,6 +21,7 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Text;
using System.Threading;
using Amqp;
@@ -471,18 +472,17 @@
* 3: QPIDIT AMQP type name of expected message body values
* 4: Expected number of test values to receive
*/
- if (args.Length != 4)
- {
- throw new System.ArgumentException(
- "Required argument count must be 4: brokerAddr queueName amqpType nValues");
- }
int exitCode = 0;
-
- //Trace.TraceLevel = TraceLevel.Frame | TraceLevel.Verbose;
- //Trace.TraceListener = (f, a) => Console.WriteLine(DateTime.Now.ToString("[hh:mm:ss.fff]") + " " + string.Format(f, a));
-
try
{
+ if (args.Length != 4)
+ {
+ throw new ApplicationException(
+ "program requires four arguments: brokerAddr queueName amqpType nValues");
+ }
+ //Trace.TraceLevel = TraceLevel.Frame | TraceLevel.Verbose;
+ //Trace.TraceListener = (f, a) => Console.WriteLine(DateTime.Now.ToString("[hh:mm:ss.fff]") + " " + string.Format(f, a));
+
Receiver receiver = new Qpidit.Receiver(
args[0], args[1], args[2], Int32.Parse(args[3]));
receiver.run();
@@ -492,7 +492,8 @@
}
catch (Exception e)
{
- Console.Error.WriteLine("AmqpReceiver error: {0}.", e);
+ string firstline = new StringReader(e.ToString()).ReadLine();
+ Console.Error.WriteLine("AmqpSender error: {0}.", firstline);
exitCode = 1;
}
diff --git a/shims/amqpnetlite/src/amqp_types_test/Sender/Sender.cs b/shims/amqpnetlite/src/amqp_types_test/Sender/Sender.cs
index 597a16e..ff76732 100644
--- a/shims/amqpnetlite/src/amqp_types_test/Sender/Sender.cs
+++ b/shims/amqpnetlite/src/amqp_types_test/Sender/Sender.cs
@@ -22,6 +22,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.IO;
using System.Text;
using System.Threading;
using System.Web.Script.Serialization;
@@ -387,6 +388,11 @@
case "map":
throw new ApplicationException(String.Format(
"Sender asked to encode a map but received a string: {0}", baseValue));
+ case "decimal32":
+ case "decimal64":
+ case "decimal128":
+ throw new ApplicationException(String.Format(
+ "AMQP.Net Lite does not support AMQP decimal type: {0}", baseType));
default:
throw new ApplicationException(String.Format(
"Sender can not encode base type: {0}", baseType));
@@ -479,24 +485,24 @@
* 3: AMQP type
* 4: Test value(s) as JSON string
*/
- if (args.Length != 4)
- {
- throw new System.ArgumentException(
- "Required argument count must be 4: brokerAddr queueName amqpType jsonValuesToSend");
- }
int exitCode = 0;
-
- //Trace.TraceLevel = TraceLevel.Frame | TraceLevel.Verbose;
- //Trace.TraceListener = (f, a) => Console.WriteLine(DateTime.Now.ToString("[hh:mm:ss.fff]") + " " + string.Format(f, a));
-
try
{
+ if (args.Length != 4)
+ {
+ throw new ApplicationException(
+ "program requires four arguments: brokerAddr queueName amqpType jsonValuesToSend");
+ }
+ //Trace.TraceLevel = TraceLevel.Frame | TraceLevel.Verbose;
+ //Trace.TraceListener = (f, a) => Console.WriteLine(DateTime.Now.ToString("[hh:mm:ss.fff]") + " " + string.Format(f, a));
+
Sender sender = new Qpidit.Sender(args[0], args[1], args[2], args[3]);
sender.run();
}
catch (Exception e)
{
- Console.Error.WriteLine("AmqpSender error: {0}.", e);
+ string firstline = new StringReader(e.ToString()).ReadLine();
+ Console.Error.WriteLine("AmqpSender error: {0}.", firstline);
exitCode = 1;
}