コード例 #1
0
        /// <summary>Checks that the edits file has all opCodes</summary>
        /// <param name="filename">edits file</param>
        /// <returns>true is edits (filename) has all opCodes</returns>
        /// <exception cref="System.IO.IOException"/>
        private bool HasAllOpCodes(string inFilename)
        {
            string                 outFilename = inFilename + ".stats";
            FileOutputStream       fout        = new FileOutputStream(outFilename);
            StatisticsEditsVisitor visitor     = new StatisticsEditsVisitor(fout);

            Org.Apache.Hadoop.Hdfs.Tools.OfflineEditsViewer.OfflineEditsViewer oev = new Org.Apache.Hadoop.Hdfs.Tools.OfflineEditsViewer.OfflineEditsViewer
                                                                                         ();
            if (oev.Go(inFilename, outFilename, "stats", new OfflineEditsViewer.Flags(), visitor
                       ) != 0)
            {
                return(false);
            }
            Log.Info("Statistics for " + inFilename + "\n" + visitor.GetStatisticsString());
            bool hasAllOpCodes = true;

            foreach (FSEditLogOpCodes opCode in FSEditLogOpCodes.Values())
            {
                // don't need to test obsolete opCodes
                if (skippedOps.Contains(opCode))
                {
                    continue;
                }
                long count = visitor.GetStatistics()[opCode];
                if ((count == null) || (count == 0))
                {
                    hasAllOpCodes = false;
                    Log.Info("Opcode " + opCode + " not tested in " + inFilename);
                }
            }
            return(hasAllOpCodes);
        }
コード例 #2
0
        /// <summary>Factory function that creates an EditsVisitor object</summary>
        /// <param name="filename">output filename</param>
        /// <param name="processor">type of visitor to create</param>
        /// <param name="printToScreen">parameter passed to visitor constructor</param>
        /// <returns>EditsVisitor for appropriate output format (binary, xml, etc.)</returns>
        /// <exception cref="System.IO.IOException"/>
        public static OfflineEditsVisitor GetEditsVisitor(string filename, string processor
                                                          , bool printToScreen)
        {
            if (StringUtils.EqualsIgnoreCase("binary", processor))
            {
                return(new BinaryEditsVisitor(filename));
            }
            OfflineEditsVisitor vis;
            OutputStream        fout = new FileOutputStream(filename);
            OutputStream        @out = null;

            try
            {
                if (!printToScreen)
                {
                    @out = fout;
                }
                else
                {
                    OutputStream[] outs = new OutputStream[2];
                    outs[0] = fout;
                    outs[1] = System.Console.Out;
                    @out    = new TeeOutputStream(outs);
                }
                if (StringUtils.EqualsIgnoreCase("xml", processor))
                {
                    vis = new XmlEditsVisitor(@out);
                }
                else
                {
                    if (StringUtils.EqualsIgnoreCase("stats", processor))
                    {
                        vis = new StatisticsEditsVisitor(@out);
                    }
                    else
                    {
                        throw new IOException("Unknown proccesor " + processor + " (valid processors: xml, binary, stats)"
                                              );
                    }
                }
                @out = fout = null;
                return(vis);
            }
            finally
            {
                IOUtils.CloseStream(fout);
                IOUtils.CloseStream(@out);
            }
        }