Beispiel #1
0
        public void DataLakeFlatFileExtractorTest()
        {
            //Code is made unreachable so unit test can run on a remote machine. If you wish to test the login prompt, simple remove the inconclusive assert and the return statement and run the test.
            Assert.Inconclusive();
            return;

            DataLakeFlatFileExtractor dataLakeFlatFileExtractor = new DataLakeFlatFileExtractor(ConfigurationManager.AppSettings.Get("DatalakeAdress"));
            var             method  = dataLakeFlatFileExtractor.GetPausableReportingWorkItem();
            string          snap    = "20190227";
            PipelineContext context = new PipelineContext()
            {
                SourceFilePath                = @"qrm02-p-01\04_Sourcefiles_Archive\201902\FT004408\Sophis_Trigger_" + snap + ".csv"
                , FirstLineContainsHeaders    = true
                , SourceFileIsSourcedFromDial = false
                , PromptAzureLogin            = true
            };
            BoundedConcurrentQueu <string> output = new BoundedConcurrentQueu <string>();
            Progress <int> prog = new Progress <int>();

            method(context, output, null, prog);

            Assert.IsTrue(output.Count == 1);
            string result;

            output.TryTake(out result);

            Console.WriteLine(result);

            Assert.IsTrue(result.Equals("Sophis|14298|-677451144.84"));
        }
Beispiel #2
0
        internal BasicSequentialPipeline(PipelineContext context)
        {
            m_Context = context;
            //decide which reader to use
            if (context.IsReadingFromDataLake)
            {
                m_Reader = new DataLakeFlatFileExtractor(context.DataLakeAdress);
            }
            else if (context.SourceFilePath.Contains(".xls"))
            {
                m_ExcelReader = new ExcelDataExtractor();
            }
            else
            {
                m_Reader = new DIALFlatFileExtractor();
            }
            m_StringSplitter = new StringSplitter(context.Qualifier)
            {
                Delimiter = context.Delimiter
            };
            m_RowBuilder  = new RecordToRowTransformer(context.ColumnNames, context.IsSkippingError);
            m_Loader      = new SQLTableLoader();
            m_LineBuffers = new List <BoundedConcurrentQueu <string> > {
                new BoundedConcurrentQueu <string>(context.TotalObjectsInSequentialPipe / NumberOfBuffers)
            };
            m_RecordBuffers = new List <BoundedConcurrentQueu <object[]> > {
                new BoundedConcurrentQueu <object[]>(context.TotalObjectsInSequentialPipe / NumberOfBuffers)
            };
            m_RowBuffers = new List <BoundedConcurrentQueu <Row> > {
                new BoundedConcurrentQueu <Row>(context.TotalObjectsInSequentialPipe / NumberOfBuffers)
            };
            m_Pause            = new ManualResetEvent(true);
            m_LatestPauseState = false;
            m_DummyProgress    = new Progress <int>();
            m_ActualProgress   = new Progress <int>();
            m_PauseSyncRoot    = new object();

            //register event
            m_ActualProgress.ProgressChanged += OnReaderEvent;
        }