public void AddListOfImages()
 {
     var MultiThreadResizer = new MultiThreadResizerWorker();
     var files = new List<string>();
     MultiThreadResizer.GetListOfFiles(Path, out files);
     MultiThreadResizer.AddListOfImages(files);
     Assert.AreEqual(string.Concat("Added ", MultiThreadResizer.ListOfResizeSettingsDefault.Count* files.Count, " FileAndCustomResizeSettings"), MultiThreadResizer.AddListOfImages(files));
 }
        public void AddListOfImagesForFile()
        {
            var MultiThreadResizer = new MultiThreadResizerWorker();
            var files = new List<string>();
            MultiThreadResizer.GetListOfFiles(Path, out files);

            MultiThreadResizer.AddListOfImagesForFile(files[0]);
            Assert.AreEqual(MultiThreadResizer.ListOfResizeSettingsDefault.Count, MultiThreadResizer.ListOfFileAndCustomResizeSettings.Count);
        }
 public static MultiThreadResizerWorker GetWorker(string uuid)
 {
     return workers.GetOrAdd(uuid, (s) => {
         int maxTaskCount;
         int.TryParse(ConfigurationManager.AppSettings["maxTaskCount"], out maxTaskCount);
         int maxImagesCountinOneThread;
         int.TryParse(ConfigurationManager.AppSettings["maxImagesCountinOneThread"], out maxImagesCountinOneThread);
         var worker = new MultiThreadResizerWorker(MaxTaskCount, MaxImagesCountinOneThread);
         worker.ListOfResizeSettings.Add(
             new CustomResizeSettings(PreviewName, PreviewSize, PreviewSize));
         return worker;
     });
 }
        public void ResizeImages()
        {
            var MultiThreadResizer = new MultiThreadResizerWorker(CountOfThreads, CountOfImage);
            MultiThreadResizer.NameSubFolderForNewFiles = @"\NewImages\ResizeImages";
            MultiThreadResizer.SetFolderWithImages(Path);
            var images = MultiThreadResizer.TakeImagesForThread();
            MultiThreadResizer.ResizeImages(images);
            Assert.AreEqual(string.Concat("Sized =", images.Count, " Successfully =", images.Count, " with errors=", 0), MultiThreadResizer.GetLogMessage());
            Assert.AreEqual(images.Count, images.Where(f => MultiThreadResizer.ListOfFileAndCustomResizeSettings[f].Status == 3).Count());

            var images2 = MultiThreadResizer.TakeImagesForThread();
            MultiThreadResizer.ResizeImages(images2);
            Assert.AreEqual(string.Concat("Sized =", images2.Count, " Successfully =", images2.Count, " with errors=", 0), MultiThreadResizer.GetLogMessage());
            Assert.AreEqual(images2.Count, images2.Where(f => MultiThreadResizer.ListOfFileAndCustomResizeSettings[f].Status == 3).Count());
            Assert.AreEqual(CountOfImage, MultiThreadResizer.ListOfFileAndCustomResizeSettings.Where(f => f.Value.Status == 3).Count());
        }
        public void ChangeFlagToFree()
        {
            var MultiThreadResizer = new MultiThreadResizerWorker(CountOfThreads, CountOfImage);
            Assert.AreEqual(GetFakeShortSummary(0, 0, 0, 0, 0, 0), MultiThreadResizer.ShortStateSummary);
            MultiThreadResizer.SetFolderWithImages(Path);

            Assert.AreEqual(GetFakeShortSummary(CountFiles,
                CountFiles * MultiThreadResizer.ListOfResizeSettings.Count,
                CountFiles * MultiThreadResizer.ListOfResizeSettings.Count,
                0, 0, 0), MultiThreadResizer.ShortStateSummary);
            var result = MultiThreadResizer.TakeImagesForThread();

            Assert.AreEqual(GetFakeShortSummary(CountFiles,
                CountFiles * MultiThreadResizer.ListOfResizeSettings.Count,
                CountFiles * MultiThreadResizer.ListOfResizeSettings.Count - CountOfThreads * CountOfImage,
                CountOfThreads * CountOfImage, 0, 0), MultiThreadResizer.ShortStateSummary);

            MultiThreadResizer.ChangeFlagToFree(result);

            Assert.AreEqual(GetFakeShortSummary(CountFiles,
                CountFiles * MultiThreadResizer.ListOfResizeSettings.Count,
                CountFiles * MultiThreadResizer.ListOfResizeSettings.Count,
                0, 0, 0), MultiThreadResizer.ShortStateSummary);
        }
 public void GetListOfFiles()
 {
     var MultiThreadResizer = new MultiThreadResizerWorker();
     var files = new List<string>();
     Assert.AreEqual(string.Concat("Found ", CountFiles, " files"), MultiThreadResizer.GetListOfFiles(Path, out files));
 }
        public void TestMultiThreadResizerClass()
        {
            var MultiThreadResizer = new MultiThreadResizerWorker();

            Assert.AreEqual(0,MultiThreadResizer.ListOfFileAndCustomResizeSettings.Count);
        }
        public void TakeImagesForThread()
        {
            var MultiThreadResizer = new MultiThreadResizerWorker(CountOfThreads, CountOfImage);
            MultiThreadResizer.SetFolderWithImages(Path);

            var result = MultiThreadResizer.TakeImagesForThread();

            Assert.AreEqual(CountOfImage, result.Count);
            Assert.AreEqual(CountOfImage,
                result.Where(f=> MultiThreadResizer.ListOfFileAndCustomResizeSettings[f].Status==2).Count());
            result = MultiThreadResizer.TakeImagesForThread();

            Assert.AreEqual(0, result.Count);
            Assert.AreEqual(0,
                result.Where(f => MultiThreadResizer.ListOfFileAndCustomResizeSettings[f].Status == 2).Count());
        }
 public void StateSummary()
 {
     int CountOfImage = 10;
     var MultiThreadResizer = new MultiThreadResizerWorker(2, CountOfImage);
     MultiThreadResizer.NameSubFolderForNewFiles = @"\NewImages\StateSummary";
     Assert.AreEqual(GetFakeShortSummary(0, 0, 0, 0, 0, 0),MultiThreadResizer.ShortStateSummary);
     MultiThreadResizer.SetFolderWithImages(Path);
     Assert.AreEqual(GetFakeShortSummary(CountFiles, CountFiles * MultiThreadResizer.ListOfResizeSettings.Count, CountFiles * MultiThreadResizer.ListOfResizeSettings.Count, 0, 0, 0),MultiThreadResizer.ShortStateSummary);
 }
        public void StartResizingByFiles()
        {
            var MultiThreadResizer = new MultiThreadResizerWorker(CountOfThreads, CountOfImage);

            MultiThreadResizer.NameSubFolderForNewFiles = @"\NewImages";
            Assert.AreEqual(GetFakeShortSummary(0, 0,0, 0, 0, 0), MultiThreadResizer.ShortStateSummary);
            MultiThreadResizer.ListOfResizeSettings.Add(new CustomResizeSettings("_2", 200, 300));
            var addedImagesResult = MultiThreadResizer.AddListOfImages(new List<string>() {
                @"C:\Users\Дмитрий\Pictures\1.jpg",
                @"C:\Users\Дмитрий\Pictures\2.png" });
            Assert.AreEqual(GetFakeShortSummary(2,
                2 * MultiThreadResizer.ListOfResizeSettings.Count,
                2 * MultiThreadResizer.ListOfResizeSettings.Count,
                0, 0, 0),
                MultiThreadResizer.ShortStateSummary);
            var result = MultiThreadResizer.ShortStateSummary;
            var task = MultiThreadResizer.StartResizingTask(60);
            task.Wait();
            Assert.AreEqual(MultiThreadResizer.ShortStateSummary, GetFakeShortSummary(2,4, 0, 0, 4, 0));
        }
 public void StartResizing()
 {
     var MultiThreadResizer = new MultiThreadResizerWorker(CountOfThreads, CountOfImage);
     MultiThreadResizer.NameSubFolderForNewFiles = @"\NewImages\StartResizing";
     Assert.AreEqual(GetFakeShortSummary(0, 0, 0, 0, 0,0), MultiThreadResizer.ShortStateSummary);
     MultiThreadResizer.SetFolderWithImages(Path);
     Assert.AreEqual(GetFakeShortSummary(CountFiles, CountFiles * MultiThreadResizer.ListOfResizeSettings.Count, CountFiles * MultiThreadResizer.ListOfResizeSettings.Count, 0, 0, 0), MultiThreadResizer.ShortStateSummary);
     var result = MultiThreadResizer.ShortStateSummary;
     var task = MultiThreadResizer.StartResizingTask(60);
     task.Wait();
     Assert.AreEqual(MultiThreadResizer.ShortStateSummary, GetFakeShortSummary(6, 6, 0, 0, 6, 0));
 }
 public void SetFolderWithImages()
 {
     var MultiThreadResizer = new MultiThreadResizerWorker();
     Assert.AreEqual(string.Concat("Added ", MultiThreadResizer.ListOfResizeSettingsDefault.Count* CountFiles, " FileAndCustomResizeSettings"), MultiThreadResizer.SetFolderWithImages(Path));
 }
		protected void WorkProcedure(object obj)
		{
            EventLog.WriteEntry("WorkProcedure starting");
            MessageQueue todoQueue = InitializeMQ(todoMessageQueue, new XmlMessageFormatter(
                new Type[] { typeof(ImagesAndSettingsForResizing), typeof(ResizeSettingsModel) }));
            MessageQueue doneQueue = InitializeMQ(doneMessageQueue, new XmlMessageFormatter(
                new Type[] { typeof(ResizedImageInfo) }));

            EventLog.WriteEntry("MessageQueue started");

            Task task = null;
            MultiThreadResizerWorker worker = null;
            do
            {
                if (task == null)
                {
                    using (todoQueue)
                    {
                        Message message = null;
                        try
                        {
                            EventLog.WriteEntry("Receiving");
                            message = todoQueue.Receive();
                            EventLog.WriteEntry("Received");
                        }
                        catch (Exception ex)
                        {
                            EventLog.WriteEntry("Receive ex" + ex.Message + ex.StackTrace);
                        }

                        ImagesAndSettingsForResizing todo = message.Body as ImagesAndSettingsForResizing;

                        EventLog.WriteEntry("check todo");
                        if (todo != null)
                        {
                            EventLog.WriteEntry("worker starting");
                            try
                            {
                                worker = new MultiThreadResizerWorker(maxTaskCount, maxImagesCountinOneThread);
                                todo.Settings.ForEach(set =>
                                {
                                    worker.ListOfResizeSettings.Add(new CustomResizeSettings(set.Name, set.Width, set.Height));
                                });
                                worker.AddListOfImages(todo.ImagesForWorker);
                                task = worker.StartResizingTask(600);
                            }
                            catch (Exception ex)
                            {
                                EventLog.WriteEntry("worker ex" + ex.Message + ex.StackTrace);
                            }
                            EventLog.WriteEntry("worker started");
                        }
                    }
                }
                else
                {
                    EventLog.WriteEntry("Task is not null");
                    if (task.IsCompleted)
                    {
                        EventLog.WriteEntry("Task is completed");
                        using (doneQueue)
                        {
                            try
                            {
                                EventLog.WriteEntry("Sending");
                                doneQueue.Send(worker.ResizedImagesList);
                                EventLog.WriteEntry("Sent");
                                task = null;
                            }
                            catch (Exception ex)
                            {
                                EventLog.WriteEntry("Sent ex" + ex.Message + ex.StackTrace);
                            }
                        }
                    }
                    else
                    {
                        EventLog.WriteEntry("Task is not completed");
                    }
                }
            }
			while (WaitHandle.WaitAny(new WaitHandle[] { stopWorkEvent}, 
				TimeSpan.FromMilliseconds(10000)) != 0);
		}