EmailValidatorPerfTest.cs 6.85 KB
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace PerformanceTestProject
{
    /// <summary>
    /// Summary description for EmailValidatorPerfTest
    /// </summary>
    [TestClass]
    public class EmailValidatorPerfTest
    {
        public EmailValidatorPerfTest()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        private TestContext testContextInstance;

        /// <summary>
        ///Gets or sets the test context which provides
        ///information about and functionality for the current test run.
        ///</summary>
        public TestContext TestContext
        {
            get
            {
                return testContextInstance;
            }
            set
            {
                testContextInstance = value;
            }
        }

        #region Additional test attributes
        //
        // You can use the following additional attributes as you write your tests:
        //
        // Use ClassInitialize to run code before running the first test in the class
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        //
        // Use ClassCleanup to run code after all tests in a class have run
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        //
        // Use TestInitialize to run code before running each test 
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        //
        // Use TestCleanup to run code after each test has run
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        //
        #endregion

        // Use TestInitialize to run code before running each test 
        private bool inLoadTest = false;
        private bool dontKnow = true;
        [TestInitialize()]
        public void CheckTestContextType()
        {
            if (dontKnow)
            {
                // Check if the TestContext type is the one that a loadtest provides
                if (TestContext.GetType().ToString().Equals("Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext"))
                    inLoadTest = true;
                else
                    inLoadTest = false;
                dontKnow = false;
                TestContext.WriteLine("We have a loadtest TestContext: " + inLoadTest);
            }
        }

        [TestMethod]
        public void AF01_Validate()
        {
            // Skapa en instans av klienten till tjänsten (gör inget anrop)
            TestContext.WriteLine("Skapar klienten..");
            EmailValidatorServiceReference.EmailValidatorClient myClient = new EmailValidatorServiceReference.EmailValidatorClient();
            myClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://localhost:8080/EmailValidator");
            
            // Simulera lite betänketid
            System.Threading.Thread.Sleep(0);

            // Logga vad vi gör...
            TestContext.WriteLine("Anropar Validate med indata: " + "christian@gerdes.se");
            // Skapa timer
            if (inLoadTest) TestContext.BeginTimer("01_ValidateCall");
            // Utför anrop mot tjänsten
            bool response = myClient.ValidateAddress("christian@gerdes.se");
            // Stoppa Timer
            if (inLoadTest) TestContext.EndTimer("01_ValidateCall");

            // Verifiera svaret
            TestContext.WriteLine("Svaret som mottogs är: " + response.ToString());
            Assert.IsTrue(response, "Verifiering av epostadress misslyckades");

            // Stäng instansen
            TestContext.WriteLine("Stänger klienten..");
            myClient.Close();
        }

        [TestMethod]
        public void AF02_CheckIfFull()
        {
            if (TestContext.Properties["TT"] == null)
                TestContext.Properties.Add("TT", "500");

            // Skapa en instans av klienten till tjänsten (gör inget anrop)
            TestContext.WriteLine("Skapar klienten..");
            EmailValidatorServiceReference.EmailValidatorClient myClient = new EmailValidatorServiceReference.EmailValidatorClient();
            myClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://localhost:8080/EmailValidator");

            // Läs TT från context
            int myTT = int.Parse(TestContext.Properties["TT"].ToString());
            TestContext.WriteLine("Använder TT: " + myTT + " ms");

            // Simulera lite betänketid
            System.Threading.Thread.Sleep(myTT);

            // Logga vad vi gör...
            TestContext.WriteLine("Anropar CheckIfFull");
            // Skapa timer
            if (inLoadTest) TestContext.BeginTimer("01_CheckIfFull");
            // Utför anrop mot tjänsten
            bool response = myClient.checkIfFull();
            // Stoppa Timer
            if (inLoadTest) TestContext.EndTimer("01_CheckIfFull");

            // Verifiera svaret
            TestContext.WriteLine("Svaret som mottogs är: " + response.ToString());
            Assert.IsTrue(response, "CheckIfFull anropet misslyckades, svaret ej True");

            // Stäng instansen
            TestContext.WriteLine("Stänger klienten..");
            myClient.Close();
        }

        [TestMethod]
        public void AF03_Register()
        {
            if (TestContext.Properties["TT"] == null)
                TestContext.Properties.Add("TT", "500");

            // Skapa en instans av klienten till tjänsten (gör inget anrop)
            TestContext.WriteLine("Skapar klienten..");
            EmailValidatorServiceReference.EmailValidatorClient myClient = new EmailValidatorServiceReference.EmailValidatorClient();
            myClient.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://localhost:8080/EmailValidator");

            // Läs TT från context
            int myTT = int.Parse(TestContext.Properties["TT"].ToString());
            TestContext.WriteLine("Använder TT: " + myTT + " ms");

            // Simulera lite betänketid
            System.Threading.Thread.Sleep(myTT);

            // Logga vad vi gör...
            TestContext.WriteLine("Anropar CheckIfFull");
            // Skapa timer
            if (inLoadTest) TestContext.BeginTimer("03_Register");
            // Utför anrop mot tjänsten
            int response = myClient.RegisterAdress("christian.gerdes@lightsinline.se");
            // Stoppa Timer
            if (inLoadTest) TestContext.EndTimer("03_Register");

            // Verifiera svaret
            TestContext.WriteLine("Svaret som mottogs är: " + response.ToString());
            if(response != 0)
                Assert.Fail("CheckIfFull anropet misslyckades, svaret ej True");

            // Stäng instansen
            TestContext.WriteLine("Stänger klienten..");
            myClient.Close();
        }
    }
}