Example #1
0
 public void FID1()
 {
     var f = new FID(1);
     var s = f.ToString();
     Console.WriteLine(s);
     Assert.AreEqual("0-0-1", s);
 }
Example #2
0
        public void FID4()
        {
            var CNT = 100000;

            var tasks = new List<Task>();
            var sets= new List<FID>(); 

            for(var c=0; c<100; c++)
            {
                tasks.Add( Task.Factory.StartNew(()=>
                {
                  var set = new FID[CNT];
                  for(var i=0; i<CNT; i++)
                  {
                    set[i] = FID.Generate();
                  }
                  
                  lock(sets)
                   sets.AddRange(set);
                }));
            }

            Task.WaitAll( tasks.ToArray() );
            Console.WriteLine("Analyzing {0:n} FIDs", sets.Count);
            Assert.IsTrue( sets.Distinct().Count() == sets.Count() );
        }
Example #3
0
 public void FID2()
 {
     var f = new FID(4353425342532);
     var s = f.ToString();
     Console.WriteLine(s);
     Assert.AreEqual("3-16096351-68", s);
 }
Example #4
0
 public ResponseMsg(FID requestID, Guid? instance,  object returnValue)
     : base()
 {
     m_RequestID = requestID;
       m_RemoteInstance = instance;
       m_ReturnValue = returnValue;
 }
Example #5
0
        /// <summary>
        /// This .ctor is handy for message inspectors.
        /// Creates a substitute message for the original one with new value.
        /// Binding-specific context is cloned and headers/correlation data are cloned conditionaly
        /// </summary>
        public ResponseMsg(ResponseMsg inspectedOriginal, object newReturnValue, bool cloneHeaders = true, bool cloneCorrelation = true)
            : base()
        {
            m_RequestID = inspectedOriginal.m_RequestID;
              m_RemoteInstance = inspectedOriginal.m_RemoteInstance;
              m_ReturnValue = newReturnValue;

              CloneState(inspectedOriginal, cloneHeaders, cloneCorrelation);
        }
Example #6
0
        /// <summary>
        /// Tries to get, return and remove CallSlot instance by its RequestID from the list.
        /// Returns null if CallSlot with such an id does not exist and nothing was removed
        /// </summary>
        public CallSlot TryGetAndRemove(FID requestID)
        {
            //getBucket() inlined for performance
            var idx    = (requestID.GetHashCode() & CoreConsts.ABS_HASH_MASK) % m_BucketCount;
            var bucket = m_Buckets[idx];

            CallSlot result;

            if (bucket.TryRemove(requestID, out result))
            {
                return(result);
            }

            return(null);
        }
Example #7
0
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            var config = CONFIG.AsLaconicConfig(handling: ConvertErrorHandling.Throw);

            m_App = new ServiceBaseApplication(null, config);

            m_Sink = (TwilioSink)((MessageService)MessageService.Instance).Sink;
            Aver.IsNotNull(m_Sink);

            Aver.IsTrue(m_Sink.Name.EqualsOrdIgnoreCase("Twilio"));
            Aver.IsTrue(m_Sink.SupportedChannels == MsgChannels.SMS);
            Aver.IsTrue(m_Sink.SupportedChannelNames.Contains("Twilio"));

            Aver.IsTrue(m_Sink.Running);
        }
Example #8
0
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            var csDefault = "google-drive{{ email='{0}' cert-path=$'{1}' }}"
                            .Args(GOOGLE_DRIVE_EMAIL, GOOGLE_DRIVE_CERT_PATH);

            CONN_PARAMS = FileSystemSessionConnectParams.Make <GoogleDriveParameters>(csDefault);

            var csTimeout = "google-drive{{ email='{0}' cert-path=$'{1}' timeout-ms=1 }}"
                            .Args(GOOGLE_DRIVE_EMAIL, GOOGLE_DRIVE_CERT_PATH);

            CONN_PARAMS_TIMEOUT = FileSystemSessionConnectParams.Make <GoogleDriveParameters>(csTimeout);

            cleanUp();
            initialize();
        }
Example #9
0
File: Calls.cs Project: ame89/nfx
        /// <summary>
        /// Tries to get, return and remove CallSlot instance by its RequestID from the list.
        /// Returns null if CallSlot with such an id does not exist and nothing was removed
        /// </summary>
        public CallSlot TryGetAndRemove(FID requestID)
        {
            //getBucket() inlined for performance
            var idx    = Math.Abs(requestID.GetHashCode() % m_BucketCount);
            var bucket = m_Buckets[idx];

            CallSlot result;

            if (bucket.TryRemove(requestID, out result))
            {
                return(result);
            }

            return(null);
        }
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            Console.WriteLine("{0}.{1}".Args(GetType().FullName, "RigSetup()..."));
            m_FS = new LocalFileSystem(NOPApplication.Instance);
            var m_TestApp = new SkyApplication(NOPApplication.Instance,
                                               SystemApplicationType.TestRig,
                                               m_FS,
                                               new FileSystemSessionConnectParams(),
                                               TestSources.RPATH,
                                               TestSources.THIS_HOST,
                                               false,
                                               null, null);

            DoRigSetup();

            Console.WriteLine("{0}.{1}".Args(GetType().FullName, "...RigSetup() DONE"));
        }
Example #11
0
    bool IRunHook.Prologue(Runner runner, FID id, MethodInfo method, RunAttribute attr, ref object[] args)
    {
      var node = new ErlLocalNode("test@localhost", true, false);
      node.Start();
      ErlApp.Node = node;

      store = new ErlDataStore();

      store.RemoteName = REMOTE_NAME;
      store.RemoteCookie = REMOTE_COOKIE;
      store.QueryResolver.ScriptAssembly = SCRIPT_ASM;
      //store.QueryResolver.RegisterHandlerLocation("NFX.ITest.CRUD.ErlSpecific, NFX.ITest");
      store.Start();

      clearAll();
      return false;
    }
Example #12
0
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            Aver.Fail("====================================== As of 20210730 This test suite is no longer supported and needs to be completely re-written in Sky ==================================================== ");


            try
            {
                ProcessStartInfo start;
                if (Platform.Abstraction.PlatformAbstractionLayer.IsNetCore)
                {
                    start = new ProcessStartInfo()
                    {
                        FileName              = "dotnet",
                        Arguments             = "toy.dll wave -config toy-wave.laconf",
                        RedirectStandardInput = true,
                        UseShellExecute       = false
                    }
                }
                ;
                else
                {
                    start = new ProcessStartInfo()
                    {
                        FileName              = "toy",
                        Arguments             = "wave -config toy-wave.laconf",
                        RedirectStandardInput = true,
                        UseShellExecute       = false
                    }
                };

                m_ServerProcess = new Process()
                {
                    StartInfo = start
                };

                m_ServerProcess.Start();

                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
            }
            catch (Exception)
            {
                Console.WriteLine("The test must be executed with admin priviledges!");
                throw;
            }
        }
Example #13
0
        public void Prologue(Runner runner, FID id)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("-------------------------------------------");
            Console.WriteLine("Run as Administrator or grant all users rights to http://localhost:9871");
            Console.WriteLine("-------------------------------------------");
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine();

            m_Client = new HttpClient();
            var config = typeof(ServerTestsBase).GetText("tests.laconf").AsLaconicConfig(handling: Data.ConvertErrorHandling.Throw);

            m_App    = new AzosApplication(null, config);
            m_Server = new WaveServer(m_App);
            m_Server.Configure(null);
            m_Server.Start();
            DoPrologue(runner, id);
        }
Example #14
0
        public void FID3()
        {
            var CNT = 0xffff * 2;

            for (var c = 0; c < 37; c++)
            {
                var set1 = new FID[CNT];
                var set2 = new FID[CNT];
                for (var i = 0; i < CNT; i++)
                {
                    set1[i] = FID.Generate();
                    set2[i] = FID.Generate();
                }

                Aver.IsFalse(set1.Intersect(set2).Any());
                "{0}: Set of {1} FIDs no intersection".SeeArgs(c, CNT);
            }
        }
Example #15
0
        public void FID3()
        {
            var CNT = 500000;

            for(var c=0; c<100; c++)
            {
                var set1 = new FID[CNT];
                var set2 = new FID[CNT];
                for(var i=0; i<CNT; i++)
                {
                  set1[i] = FID.Generate();
                  set2[i] = FID.Generate();
                }

                Assert.IsFalse( set1.Intersect(set2).Any() );
                Console.WriteLine("{0}: Set of {1} FIDs no intersection", c, CNT);
            }
        }
Example #16
0
 public void getKeyValuePairsTest(int count)
 {
     using (var test = new PrefixTree <int>(m_Pile))
     {
         Console.WriteLine(DateTime.Now);
         for (int i = 0; i < count; i++)
         {
             test[FID.Generate().ToString()] = i;
         }
         Console.WriteLine(DateTime.Now);
         List <KeyValuePair <string, int> > keyValuePairs = new List <KeyValuePair <string, int> >(test.getKeyValuePairs());
         Console.WriteLine(keyValuePairs.Count);
         Console.WriteLine(DateTime.Now);
         Console.WriteLine(new List <String>(test.Keys).Count);
         Console.WriteLine(DateTime.Now);
     }
     Console.WriteLine(m_Pile.ObjectCount);
     Console.WriteLine(DateTime.Now);
 }
Example #17
0
        bool IRunHook.Prologue(Runner runner, FID id, MethodInfo method, RunAttribute attr, ref object[] args)
        {
            TestImg1 = new Color[4, 8]
            {
                { G, B, R, B, B, R, B, G },
                { G, B, B, B, B, B, B, G },
                { G, B, R, B, B, R, B, G },
                { G, G, B, R, R, B, G, G }
            }.ToImage();

            TestImg2 = new Color[3, 3]
            {
                { G, B, R },
                { G, B, B },
                { G, G, G }
            }.ToImage();

            return(false);
        }
Example #18
0
        protected override ResponseMsg DoDecodeResponse(WireFrame frame, MemoryStream ms)
        {
            var utf8 = ms.GetBuffer();
            var json = Encoding.UTF8.GetString(utf8, (int)ms.Position, (int)ms.Length - (int)ms.Position);
            var data = json.JSONToDataObject() as JSONDataMap;

            if (data == null)
            {
                throw new ProtocolException(StringConsts.GLUE_BINDING_RESPONSE_ERROR.Args(nameof(AppTermBinding), "data==null"));
            }


            var reqID    = new FID(data["request-id"].AsULong(handling: ConvertErrorHandling.Throw));
            var instance = data["instance"].AsNullableGUID(handling: ConvertErrorHandling.Throw);

            object returnValue = data["return"];

            if (returnValue == null || returnValue is string)
            {
                //return as-is
            }
            else if (returnValue is JSONDataMap map)//error or Remote Terminal
            {
                var errorContent = map["error-content"].AsString();
                if (errorContent != null)
                {
                    returnValue = WrappedExceptionData.FromBase64(errorContent);
                }
                else
                {
                    returnValue = new Contracts.RemoteTerminalInfo(map);
                }
            }
            else
            {
                throw new ProtocolException(StringConsts.GLUE_BINDING_RESPONSE_ERROR.Args(nameof(AppTermBinding), "data.return is " + returnValue.GetType().FullName));
            }


            var result = new ResponseMsg(reqID, instance, returnValue);

            return(result);
        }
Example #19
0
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            try
            {
                ProcessStartInfo start;
                if (PAL.PlatformAbstractionLayer.IsNetCore)
                {
                    start = new ProcessStartInfo()
                    {
                        FileName              = "dotnet",
                        Arguments             = "toy.dll wave -config toy-wave.laconf",
                        RedirectStandardInput = true,
                        UseShellExecute       = false
                    }
                }
                ;
                else
                {
                    start = new ProcessStartInfo()
                    {
                        FileName              = "toy",
                        Arguments             = "wave -config toy-wave.laconf",
                        RedirectStandardInput = true,
                        UseShellExecute       = false
                    }
                };

                m_ServerProcess = new Process()
                {
                    StartInfo = start
                };

                m_ServerProcess.Start();

                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
            }
            catch (Exception)
            {
                Console.WriteLine("The test must be executed with admin priviledges!");
                throw;
            }
        }
Example #20
0
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            var config = CONFIG.AsLaconicConfig(handling: ConvertErrorHandling.Throw);

            m_App = new AzosApplication(null, config);


            m_Daemon = new MessageDaemon(m_App);
            m_Daemon.Configure(null);
            m_Daemon.Start();
            m_Sink = m_Daemon.Sink as TwilioSink;

            Aver.IsNotNull(m_Sink);

            Aver.IsTrue(m_Sink.Name.EqualsOrdIgnoreCase("Twilio"));
            Aver.IsTrue(m_Sink.SupportedChannels == MsgChannels.SMS);
            Aver.IsTrue(m_Sink.SupportedChannelNames.Contains("Twilio"));

            Aver.IsTrue(m_Sink.Running);
        }
Example #21
0
        void IRunnableHook.Prologue(Runner runner, FID id)
        {
            ProcessStartInfo start;

            if (Platform.Abstraction.PlatformAbstractionLayer.IsNetCore)
            {
                start = new ProcessStartInfo()
                {
                    FileName              = "dotnet",
                    Arguments             = "toy.dll -config toy-server.laconf",
                    RedirectStandardInput = true,
                    UseShellExecute       = false
                }
            }
            ;
            else
            {
                start = new ProcessStartInfo()
                {
                    FileName              = "toy.exe",
                    Arguments             = "-config toy-server.laconf",
                    RedirectStandardInput = true,
                    UseShellExecute       = false
                }
            };

            m_ServerProcess = new Process()
            {
                StartInfo = start
            };

            m_ServerProcess.Start();

            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));
        }

        bool IRunnableHook.Epilogue(Runner runner, FID id, Exception error)
        {
            m_ServerProcess.StandardInput.WriteLine(string.Empty);
            return(false);
        }
Example #22
0
        public void BeginRunnable(Runner runner, FID id, object runnable)
        {
            m_TotalRunnables++;
            var t = runnable.GetType();

            m_RunnableHeader     = "Starting {0}::{1}.{2} ...".Args(t.Assembly.GetName().Name, t.Namespace, t.DisplayNameWithExpandedGenericArgs());
            m_HadRunnableMethods = false;
            m_PriorMethodName    = null;
            m_PriorMethodCount   = 0;

            var o = m_Out?.Root;

            if (o != null)
            {
                m_RunnableNode = o.AddChildNode("runnable", runnable.GetType().Name);
                m_RunnableNode.AddAttributeNode("id", id);
                m_RunnableNode.AddAttributeNode("type", runnable.GetType().AssemblyQualifiedName);
                m_RunnableNode.AddAttributeNode("now-loc", App.LocalizedTime);
                m_RunnableNode.AddAttributeNode("now-utc", App.TimeSource.UTCNow);
            }
        }
Example #23
0
        public void Glue_SerializeDeserialize()
        {
            var frm1 = new WireFrame(123, false, FID.Generate());

            Aver.AreEqual(WireFrame.FRAME_LENGTH, frm1.Length);

            var ms = new MemoryStream();

            Aver.AreEqual(WireFrame.FRAME_LENGTH, frm1.Serialize(ms));

            ms.Position = 0;

            var frm2 = new WireFrame(ms);

            Aver.IsTrue(frm1.Type == frm2.Type);
            Aver.AreEqual(frm1.RequestID, frm2.RequestID);
            Aver.AreEqual(frm1.OneWay, frm2.OneWay);

            Aver.AreEqual(frm1.Length, frm2.Length);
            Aver.AreEqual(frm1.Format, frm2.Format);
            Aver.AreEqual(frm1.HeadersContent, frm2.HeadersContent);

            Aver.IsFalse(frm2.OneWay);
        }
Example #24
0
File: Msg.cs Project: itadapter/nfx
 /// <summary>
 /// Constructs new message and allocates unique ID
 /// </summary>
 protected Msg()
 {
     m_ID = FID.Generate();
 }
Example #25
0
 public abstract void Write(FID? value);
Example #26
0
 public ResponseMsg ServerHandleRequestFailure(FID reqID, bool oneWay, Exception failure, object bindingSpecCtx)
 {
     return null;
 }
Example #27
0
 public override void Write(FID? value)
 {
     if (value.HasValue)
         {
           this.Write(true);
           Write(value.Value);
           return;
         }
         this.Write(false);
 }
Example #28
0
 public override void Write(FID value)
 {
     m_Stream.WriteBEUInt64( value.ID );
 }
Example #29
0
            /// <summary>
            /// Reconstruct (deserializes) frame from the stream. May throw on error
            /// </summary>
            public WireFrame(Stream stream) : this()
            {
                //MAGIC
                var magic = stream.ReadBEUShort();
                if (magic != MAGIC)
                    throw new ProtocolException(
                                StringConsts.GLUE_BAD_PROTOCOL_FRAME_ERROR + "bag magic: expected '{0}' but got '{1}'".Args(MAGIC, magic));
                
                //VERSION
                var ver = stream.ReadByte();
                if (ver != VERSION) 
                    throw new ProtocolException(
                                StringConsts.GLUE_BAD_PROTOCOL_FRAME_ERROR + "version mismatch: expected '{0}' but got '{1}'".Args(VERSION, ver));
                //TYPE
                m_Type  = (FrameType)stream.ReadByte();

                //FORMAT 
                m_Format = stream.ReadBEInt32();
                
                //ONEWAY
                m_OneWay = stream.ReadByte() != 0;

                //REQUESTID
                m_RequestID = new FID( stream.ReadBEUInt64() );

                //HEADERSCONTENT
                var len = stream.ReadBEInt32();
                if (len>0)
                {
                    if (len>MAX_HEADERS_BYTE_LENGTH) 
                       throw new ProtocolException(
                                StringConsts.GLUE_BAD_PROTOCOL_FRAME_ERROR + "arrived headers length of {0} bytes exceeds the limit of {1} bytes".Args(len, MAX_HEADERS_BYTE_LENGTH)); 
                   
                    m_HeadersContentLength = len;
                    
                    var hbuf = new byte[len];
                    stream.Read(hbuf, 0, len);
                    m_HeadersContent = HEADERS_ENCODING.GetString( hbuf );
                }

                m_Length = FRAME_LENGTH + m_HeadersContentLength;
            }
Example #30
0
            public WireFrame(FrameType type, int format, bool oneWay, FID reqID, string headersContent = null) : this()
            {
                m_Type           = type;
                m_Format         = format;
                m_OneWay         = type==FrameType.GlueMsg ? oneWay : type!=FrameType.Echo; 
                m_RequestID      = reqID;
                m_HeadersContent = headersContent;
                m_HeadersContentLength = string.IsNullOrWhiteSpace(headersContent)? 0 : HEADERS_ENCODING.GetByteCount( headersContent );
                m_Length         =  FRAME_LENGTH + m_HeadersContentLength;

                if (m_HeadersContentLength>MAX_HEADERS_BYTE_LENGTH) 
                       throw new ProtocolException(
                           StringConsts.GLUE_BAD_PROTOCOL_FRAME_ERROR + "created headers length of {0} bytes exceeds the limit of {1} bytes"
                                                                        .Args(m_HeadersContentLength, MAX_HEADERS_BYTE_LENGTH)); 
            }    
Example #31
0
            public WireFrame(int format, bool oneWay, FID reqID, string headersContent = null) :
                             this(FrameType.GlueMsg, format, oneWay, reqID, headersContent)
            {

            }
Example #32
0
        public void FID4(int CNT, int tCNT)
        {
            var tasks = new List<Task>();
            var sets= new List<FID>();
            var bag = new ConcurrentBag<FID[]>();

            for(var c=0; c<tCNT; c++)
            {
                tasks.Add( Task.Factory.StartNew(()=>
                {
                  var set = new FID[CNT];

                  for(var i=0; i<CNT; i++)
                  {
                    set[i] = FID.Generate();
                  }

                  bag.Add( set );
                }));
            }

            Task.WaitAll( tasks.ToArray() );

            foreach(var set in bag)
             sets.AddRange( set );

            Console.WriteLine("Analyzing {0:n} FIDs", sets.Count);
            Assert.IsTrue( sets.AsParallel().Distinct().Count() == sets.Count() );
            Console.WriteLine("Done. All ok");
        }
Example #33
0
 public ResponseMsg(FID requestID, object returnValue) : this(requestID, null, returnValue)
 {}
Example #34
0
        /// <summary>
        /// Handles request synchronously in the context of the calling thread. Returns NULL for one-way calls
        /// </summary>
        public ResponseMsg HandleRequestFailure(FID reqID, bool oneWay, Exception failure, object bindingSpecCtx)
        {
            if (oneWay)
                return null;

            var red = new RemoteExceptionData(failure);
            var response = new ResponseMsg(reqID, red);
            response.__SetBindingSpecificContext(bindingSpecCtx);

            return response;
       }