Exemple #1
0
        public void CreateAllErrorExceptions()
        {
            int i = 0;

            foreach (JET_err err in Enum.GetValues(typeof(JET_err)))
            {
                if (JET_err.Success != err)
                {
                    EsentErrorException ex = EsentExceptionHelper.JetErrToException(err);
                    Assert.IsNotNull(ex);
                    Assert.AreEqual(err, ex.Error);
                    Assert.IsNotNull(ex.Message);
                    Assert.AreNotEqual(string.Empty, ex.Message);

#if MANAGEDESENT_ON_CORECLR
#else
                    EsentErrorException deserialized = SerializeDeserialize(ex);
                    Assert.AreEqual(err, deserialized.Error);
                    Assert.AreEqual(ex.Message, deserialized.Message);
#endif
                    i++;
                }
            }

            EseInteropTestHelper.ConsoleWriteLine("Created {0} different error exceptions", i);
        }
Exemple #2
0
        public void VerifyEsentErrorExceptionSetsMessage()
        {
            string expected = Any.String;
            var    ex       = new EsentErrorException(expected, JET_err.AccessDenied);

            Assert.AreEqual(expected, ex.Message);
        }
Exemple #3
0
        public EsentErrorException Verify(string logfile, byte[] logInMemory)
        {
            EsentErrorException ex = null;

            lock (this)
            {
                this.AssertNotTerminated();
                try
                {
                    UnpublishedApi.ChecksumLogFromMemory(this.Sesid, logfile, this.m_basename, logInMemory);
                    LogChecksummer.Tracer.TraceDebug <string>((long)this.GetHashCode(), "LogChecksummer({0}) verified.", logfile);
                }
                catch (EsentLogFileCorruptException ex2)
                {
                    ex = ex2;
                }
                catch (EsentErrorException ex3)
                {
                    ex = ex3;
                }
                if (ex != null)
                {
                    LogChecksummer.Tracer.TraceError <string, EsentErrorException>((long)this.GetHashCode(), "LogChecksummer({0}) failed:{1}", logfile, ex);
                }
            }
            return(ex);
        }
Exemple #4
0
        public void VerifyEsentErrorExceptionSerializationPreservesError()
        {
            var originalException     = new EsentErrorException("description", JET_err.VersionStoreOutOfMemory);
            var deserializedException = SerializeDeserialize(originalException);

            Assert.AreEqual(originalException.Error, deserializedException.Error);
            Assert.AreEqual(originalException.Message, deserializedException.Message);
        }
Exemple #5
0
        // Token: 0x06001D4B RID: 7499 RVA: 0x000843F4 File Offset: 0x000825F4
        internal static bool VerifyLogStatic(long logfileNumber, LogSource logSource, string logfileInspect, bool fRecopyOnFailure, FileState filestate, LogVerifier logVerifier, LogContinuityChecker continuityChecker, LogInspector.CheckStopDelegate checkStopPending, out LocalizedString error)
        {
            ulong num   = fRecopyOnFailure ? 3UL : 1UL;
            bool  flag  = false;
            bool  flag2 = false;

            error = LocalizedString.Empty;
            for (ulong num2 = 0UL; num2 < num; num2 += 1UL)
            {
                bool flag3 = false;
                if (flag2 && fRecopyOnFailure)
                {
                    LogInspector.RecopyCorruptLog(logfileNumber, logSource, logfileInspect);
                    flag3 = true;
                }
                checkStopPending();
                EsentErrorException ex = logVerifier.Verify(logfileInspect);
                if (ex != null)
                {
                    ExTraceGlobals.LogInspectorTracer.TraceError <string, EsentErrorException>(0L, "Inspection of logfile {0} failed: {1}", logfileInspect, ex);
                    error = new LocalizedString(ex.Message);
                    if (!(ex is EsentFileAccessDeniedException))
                    {
                        flag2 = true;
                        LogInspector.ReportCorruptLog(logfileInspect, error);
                    }
                }
                else
                {
                    flag2 = false;
                    checkStopPending();
                    flag = LogInspector.CheckLogHeader(logfileNumber, logfileInspect, filestate, continuityChecker, out error);
                    if (!flag)
                    {
                        LogInspector.ReportCorruptLog(logfileInspect, error);
                    }
                    else
                    {
                        if (flag3)
                        {
                            ReplayEventLogConstants.Tuple_InspectorFixedCorruptLog.LogEvent(logfileInspect, new object[]
                            {
                                logfileInspect
                            });
                            break;
                        }
                        break;
                    }
                }
            }
            return(flag);
        }
Exemple #6
0
        // Token: 0x06001D49 RID: 7497 RVA: 0x00084374 File Offset: 0x00082574
        internal static bool VerifyLogTask(long logfileNumber, string logfileInspect, FileState fileState, LogVerifier logVerifier, LogContinuityChecker continuityChecker, out LocalizedString error)
        {
            error = LocalizedString.Empty;
            if (logVerifier == null)
            {
                throw new ArgumentNullException("logVerifier");
            }
            EsentErrorException ex = logVerifier.Verify(logfileInspect);

            if (ex != null)
            {
                error = new LocalizedString(ex.Message);
                return(false);
            }
            return(LogInspector.CheckLogHeaderInternal(logfileNumber, logfileInspect, fileState, continuityChecker, out error));
        }
        public void VerifyEsentErrorExceptionHasDefaultErrorDescription()
        {
            var mocks   = new MockRepository();
            var mockApi = mocks.StrictMock <IJetApi>();

            using (new ApiTestHook(mockApi))
            {
                Expect.Call(
                    mockApi.JetGetSystemParameter(
                        Arg <JET_INSTANCE> .Is.Anything,
                        Arg <JET_SESID> .Is.Anything,
                        Arg <JET_param> .Is.Equal(JET_param.ErrorToString),
                        ref Arg <int> .Ref(Is.Equal((int)JET_err.OutOfMemory), (int)JET_err.OutOfMemory).Dummy,
                        out Arg <string> .Out(null).Dummy,
                        Arg <int> .Is.Anything))
                .Return((int)JET_err.InvalidParameter);
                mocks.ReplayAll();

                var ex = new EsentErrorException(JET_err.OutOfMemory);
                Assert.IsTrue(!String.IsNullOrEmpty(ex.ErrorDescription));
            }
        }
        public static Exception Verify(string fileName, string logFilePrefix, long expectedGen, JET_SIGNATURE?expectedLogSignature)
        {
            LogVerifier         logVerifier = new LogVerifier(logFilePrefix);
            EsentErrorException ex          = logVerifier.Verify(fileName);

            if (ex != null)
            {
                return(ex);
            }
            JET_LOGINFOMISC jet_LOGINFOMISC;

            UnpublishedApi.JetGetLogFileInfo(fileName, out jet_LOGINFOMISC, JET_LogInfo.Misc2);
            if ((long)jet_LOGINFOMISC.ulGeneration != expectedGen)
            {
                return(new FileCheckLogfileGenerationException(fileName, (long)jet_LOGINFOMISC.ulGeneration, expectedGen));
            }
            if (expectedLogSignature != null && !jet_LOGINFOMISC.signLog.Equals(expectedLogSignature))
            {
                return(new FileCheckLogfileSignatureException(fileName, jet_LOGINFOMISC.signLog.ToString(), expectedLogSignature.ToString()));
            }
            return(null);
        }
        public void VerifyEsentErrorExceptionGetsErrorDescriptionFromSystemParameter()
        {
            var mocks   = new MockRepository();
            var mockApi = mocks.StrictMock <IJetApi>();

            using (new ApiTestHook(mockApi))
            {
                const string ExpectedDescription = "Error Description";
                Expect.Call(
                    mockApi.JetGetSystemParameter(
                        Arg <JET_INSTANCE> .Is.Anything,
                        Arg <JET_SESID> .Is.Anything,
                        Arg <JET_param> .Is.Equal(JET_param.ErrorToString),
                        ref Arg <int> .Ref(Is.Equal((int)JET_err.OutOfMemory), (int)JET_err.OutOfMemory).Dummy,
                        out Arg <string> .Out(ExpectedDescription).Dummy,
                        Arg <int> .Is.Anything))
                .Return((int)JET_err.Success);
                mocks.ReplayAll();

                var ex = new EsentErrorException(JET_err.OutOfMemory);
                Assert.AreEqual(ExpectedDescription, ex.ErrorDescription);
            }
        }
Exemple #10
0
        public void CreateAllErrorExceptions()
        {
            int i = 0;

            foreach (JET_err err in Enum.GetValues(typeof(JET_err)))
            {
                if (JET_err.Success != err)
                {
                    EsentErrorException ex = EsentExceptionHelper.JetErrToException(err);
                    Assert.IsNotNull(ex);
                    Assert.AreEqual(err, ex.Error);
                    Assert.IsNotNull(ex.Message);
                    Assert.AreNotEqual(String.Empty, ex.Message);

                    EsentErrorException deserialized = SerializeDeserialize(ex);
                    Assert.AreEqual(err, deserialized.Error);
                    Assert.AreEqual(ex.Message, deserialized.Message);
                    i++;
                }
            }

            Console.WriteLine("Created {0} different error exceptions", i);
        }
        public void VerifyEsentErrorExceptionConstructorSetsError()
        {
            var ex = new EsentErrorException(JET_err.AccessDenied);

            Assert.AreEqual(JET_err.AccessDenied, ex.Error);
        }
Exemple #12
0
        // Token: 0x06001D67 RID: 7527 RVA: 0x00084D0C File Offset: 0x00082F0C
        private Exception VerifyLog(string fullLocalFileName, long expectedGen)
        {
            Exception ex = null;

            try
            {
                ReplayStopwatch replayStopwatch = new ReplayStopwatch();
                replayStopwatch.Start();
                using (SafeFileHandle safeFileHandle = LogCopy.OpenLogForRead(fullLocalFileName))
                {
                    long arg = replayStopwatch.ElapsedMilliseconds;
                    LogRepair.Tracer.TracePerformance <string, long>((long)this.GetHashCode(), "VerifyLog({0}): Open took: {1} ms", fullLocalFileName, arg);
                    using (FileStream fileStream = LogCopy.OpenFileStream(safeFileHandle, true))
                    {
                        FileInfo fileInfo = new FileInfo(fullLocalFileName);
                        long     elapsedMilliseconds;
                        try
                        {
                            if (fileInfo.Length != 1048576L)
                            {
                                throw new IOException(string.Format("Unexpected log file size: '{0}' has 0x{1:X} bytes.", fullLocalFileName, fileInfo.Length));
                            }
                            elapsedMilliseconds = replayStopwatch.ElapsedMilliseconds;
                            int num = fileStream.Read(this.m_verifierLogDataBuf, 0, 1048576);
                            if (num != 1048576)
                            {
                                LogRepair.Tracer.TraceError <int, int, string>((long)this.GetHashCode(), "VerifyLog. Expected {0} but got {1} bytes from {2}", 1048576, num, fullLocalFileName);
                                throw new IOException(ReplayStrings.UnexpectedEOF(fullLocalFileName));
                            }
                            arg = replayStopwatch.ElapsedMilliseconds - elapsedMilliseconds;
                            LogRepair.Tracer.TracePerformance <string, long>((long)this.GetHashCode(), "VerifyLog({0}): Read took: {1} ms", fullLocalFileName, arg);
                        }
                        catch (IOException ex2)
                        {
                            throw new CorruptLogDetectedException(fullLocalFileName, ex2.Message, ex2);
                        }
                        elapsedMilliseconds = replayStopwatch.ElapsedMilliseconds;
                        EsentErrorException ex3 = this.EseLogVerifier.Verify(fullLocalFileName, this.m_verifierLogDataBuf);
                        if (ex3 != null)
                        {
                            LogRepair.Tracer.TraceError <string, EsentErrorException>((long)this.GetHashCode(), "ESELogVerifier({0}) failed: {1}", fullLocalFileName, ex3);
                            if (ex3 is EsentLogFileCorruptException)
                            {
                                throw new CorruptLogDetectedException(fullLocalFileName, ex3.Message, ex3);
                            }
                            throw ex3;
                        }
                        else
                        {
                            JET_LOGINFOMISC jet_LOGINFOMISC;
                            UnpublishedApi.JetGetLogFileInfo(fullLocalFileName, out jet_LOGINFOMISC, JET_LogInfo.Misc2);
                            if ((long)jet_LOGINFOMISC.ulGeneration != expectedGen)
                            {
                                throw new FileCheckLogfileGenerationException(fullLocalFileName, (long)jet_LOGINFOMISC.ulGeneration, expectedGen);
                            }
                            if (this.m_logfileSignature == null)
                            {
                                this.m_logfileSignature = new JET_SIGNATURE?(jet_LOGINFOMISC.signLog);
                            }
                            if (!jet_LOGINFOMISC.signLog.Equals(this.m_logfileSignature))
                            {
                                throw new FileCheckLogfileSignatureException(fullLocalFileName, jet_LOGINFOMISC.signLog.ToString(), this.m_logfileSignature.ToString());
                            }
                            arg = replayStopwatch.ElapsedMilliseconds - elapsedMilliseconds;
                            LogRepair.Tracer.TracePerformance <string, long>((long)this.GetHashCode(), "VerifyLog({0}): Verify took: {1} ms", fullLocalFileName, arg);
                            return(null);
                        }
                    }
                }
            }
            catch (IOException ex4)
            {
                ex = ex4;
            }
            catch (UnauthorizedAccessException ex5)
            {
                ex = ex5;
            }
            catch (EsentErrorException ex6)
            {
                ex = ex6;
            }
            catch (CorruptLogDetectedException ex7)
            {
                ex = ex7;
            }
            catch (FileCheckException ex8)
            {
                ex = ex8;
            }
            if (ex != null)
            {
                LogRepair.Tracer.TraceError <string, Exception>((long)this.GetHashCode(), "VerifyLog({0}): failed with {1}", fullLocalFileName, ex);
            }
            return(ex);
        }