Ejemplo n.º 1
0
        private void GetDevicesReport()
        {
            bool haveMultiChannelDevice = m_model.GetDevices().Count(x => x is MultiChannelDevice) > 0;

            m_writer.WriteLine(
                $"   <table>\r\n" +
                $"    <caption>{GlobalizationEngine.GetString("Information about devices")}</caption>\r\n" +
                $"    <tr>\r\n" +
                $"     <th>{GlobalizationEngine.GetString("Name of device")}</th>\r\n" +
                $"     <th>{GlobalizationEngine.GetString("Average processing time")}</th>\r\n" +
                $"     <th>{GlobalizationEngine.GetString("Load percentage")}</th>\r\n" +
                $"     <th>{GlobalizationEngine.GetString("Transact count")}</th>\r\n" +
                (haveMultiChannelDevice ? $"     <th>{GlobalizationEngine.GetString("Channel count")}</th>\r\n" : "") +
                $"    </tr>");

            foreach (Device device in m_model.GetDevices())
            {
                string avgProcessingTime = (device.TimeUsedSum * 1.0f / device.TransactCount).ToString("0.##");
                string loadPercentage    = (device.TimeUsedSum * 1.0f / m_model.ModelTime * 100).ToString("0.##");
                m_writer.WriteLine($"<tr><td>{device.Name}</td><td>{avgProcessingTime}</td><td>{loadPercentage}%</td><td>{device.TransactCount}</td>");
                if (device is MultiChannelDevice)
                {
                    MultiChannelDevice multichannelDevice = device as MultiChannelDevice;
                    m_writer.WriteLine($"<td>{multichannelDevice.StorageSize}</td>");
                }
                m_writer.WriteLine("</tr>");
            }

            m_writer.WriteLine("   </table>");
        }
Ejemplo n.º 2
0
        private void GetDevicesReport(int maxPossibleLines)
        {
            Console.WriteLine($"  {GlobalizationEngine.GetString("Information about devices")}:");
            int outputLength = 0;

            foreach (Device device in m_model.GetDevices())
            {
                double avgProcessingTime = device.TimeUsedSum * 1.0f / device.TransactCount;
                Console.WriteLine($"    {GlobalizationEngine.GetString("Name of device")}: {device.Name}");
                Console.WriteLine($"    {GlobalizationEngine.GetString("Average processing time")}: {avgProcessingTime.ToString("0.##")}");
                Console.WriteLine($"    {GlobalizationEngine.GetString("Load percentage")}: {(device.TimeUsedSum * 1.0f / m_model.ModelTime * 100).ToString("0.##")}%");
                Console.WriteLine($"    {GlobalizationEngine.GetString("Transact count")}: {device.TransactCount}");

                if (device is MultiChannelDevice)
                {
                    MultiChannelDevice multichannelDevice = device as MultiChannelDevice;
                    Console.WriteLine($"    {GlobalizationEngine.GetString("Channel count")}: {multichannelDevice.StorageSize}");
                }

                if (maxPossibleLines != -1 && outputLength++ > maxPossibleLines)
                {
                    Console.WriteLine(GlobalizationEngine.GetString("There are too many items to be displayed. Truncating output. If you want to avoid it, set maxPossibleLines to -1"));
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        private void GetDevicesReport()
        {
            bool haveMultiChannelDevice = m_model.GetDevices().Count(x => x is MultiChannelDevice) > 0;

            m_writer.WriteLine($"## {GlobalizationEngine.GetString("Information about devices")}");
            m_writer.WriteLine("");
            m_writer.WriteLine($"| {GlobalizationEngine.GetString("Name of device")} | {GlobalizationEngine.GetString("Average processing time")} | " +
                               $" {GlobalizationEngine.GetString("Average processing time")} | {GlobalizationEngine.GetString("Transact count")} | {(haveMultiChannelDevice? GlobalizationEngine.GetString("Channel count") + " |":"")}");
            m_writer.WriteLine($"|-------------|---------------------|-----------------|----------------|{(haveMultiChannelDevice ?"----------------|":"")}");
            foreach (Device device in m_model.GetDevices())
            {
                string avgProcessingTime = (device.TimeUsedSum * 1.0f / device.TransactCount).ToString("0.##");
                string loadPercentage    = (device.TimeUsedSum * 1.0f / m_model.ModelTime * 100).ToString("0.##");
                string line = $"| {device.Name} | {avgProcessingTime} | {loadPercentage}% | {device.TransactCount} |";

                if (device is MultiChannelDevice)
                {
                    MultiChannelDevice multichannelDevice = device as MultiChannelDevice;
                    line += $" {multichannelDevice.StorageSize} |";
                }

                m_writer.WriteLine(line);
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            InitGlobalizationEngine(Language.RU);

            Model model = new Model();
            MultiChannelDevice multiChannelDevice = model.CreateMultiChannelDevice("MultiChannel", 7);
            SMQueue            queue = model.CreateQueue("Accumulator");

            UInt64 transactCounter = 1;

            model.Schedule((int)Events.EventGenerate, model.Random(14, 26), transactCounter);
            model.Schedule((int)Events.EventEnd, 4800, (ulong)1e9);

            UInt64 currentTransact = 1;
            Events currentEvent    = Events.EventEnd;

            do
            {
                (UInt64, UInt64)top = model.Cause();
                currentEvent        = (Events)top.Item1;
                currentTransact     = top.Item2;

                switch (currentEvent)
                {
                case Events.EventGenerate:
                {
                    model.Schedule((int)Events.EventReserve, 0, currentTransact);
                    transactCounter++;
                    model.Schedule((int)Events.EventGenerate, model.Random(14, 26), transactCounter);
                    break;
                }

                case Events.EventReserve:
                {
                    if (multiChannelDevice.GetState() != Device.State.Full)
                    {
                        multiChannelDevice.Reserve(currentTransact);
                        model.Schedule((int)Events.EventRelease, model.Random(130, 150), currentTransact);
                    }
                    else
                    {
                        queue.Add(currentTransact, 0);
                    }

                    break;
                }

                case Events.EventRelease:
                {
                    multiChannelDevice.Release();
                    if (queue.Count > 0)
                    {
                        UInt64 transactId = queue.Dequeue(out UInt64 stage).TransactId;
                        model.Schedule((int)Events.EventReserve, 0, transactId);
                    }

                    break;
                }

                case Events.EventEnd:
                {
                    break;
                }

                default:
                {
                    throw new Exception();
                }
                }
            }while (currentEvent != Events.EventEnd);

            using (HtmlReporter htmlReporter = new HtmlReporter(model))
            {
                htmlReporter.GetReport("output.html");
            }
        }