Browse Source

Add some tests

Marcin Krzyżanowski 10 years ago
parent
commit
196004b056
2 changed files with 56 additions and 10 deletions
  1. 50 0
      CryptoSwiftTests/AESTests.swift
  2. 6 10
      CryptoSwiftTests/HashTests.swift

+ 50 - 0
CryptoSwiftTests/AESTests.swift

@@ -174,4 +174,54 @@ class AESTests: XCTestCase {
         }
         }
     }
     }
 
 
+    func testAESPerformance() {
+        let key:[UInt8] = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
+        let iv:[UInt8] = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
+        let message = [UInt8](count: 1024 * 1024, repeatedValue: 7)
+        self.measureMetrics([XCTPerformanceMetric_WallClockTime], automaticallyStartMeasuring: false, forBlock: { () -> Void in
+            self.startMeasuring()
+            let encrypted = AES(key: key, iv: iv, blockMode: .CBC)?.encrypt(message, padding: PKCS7())
+            self.stopMeasuring()
+        })
+    }
+    
+    func testAESPerformanceCommonCrypto() {
+        let key:[UInt8] = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
+        let iv:[UInt8] = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
+        let message = [UInt8](count: 1024 * 1024, repeatedValue: 7)
+        
+        self.measureMetrics([XCTPerformanceMetric_WallClockTime], automaticallyStartMeasuring: false, forBlock: { () -> Void in
+            self.startMeasuring()
+            
+            let keyData     = NSData.withBytes(key)
+            let keyBytes    = UnsafePointer<Void>(keyData.bytes)
+            let ivData      = NSData.withBytes(iv)
+            let ivBytes     = UnsafePointer<Void>(ivData.bytes)
+            
+            let data = NSData.withBytes(message)
+            let dataLength    = data.length
+            let dataBytes     = UnsafePointer<Void>(data.bytes)
+            
+            let cryptData    = NSMutableData(length: Int(dataLength) + kCCBlockSizeAES128)
+            var cryptPointer = UnsafeMutablePointer<Void>(cryptData!.mutableBytes)
+            let cryptLength  = cryptData!.length
+            
+            var numBytesEncrypted:Int = 0
+            
+            var cryptStatus = CCCrypt(
+                UInt32(kCCEncrypt),
+                UInt32(kCCAlgorithmAES128),
+                UInt32(kCCOptionPKCS7Padding),
+                keyBytes,
+                key.count,
+                ivBytes,
+                dataBytes,
+                dataLength,
+                cryptPointer, cryptLength,
+                &numBytesEncrypted)
+
+            self.stopMeasuring()
+        })
+    }
+
 }
 }

+ 6 - 10
CryptoSwiftTests/HashTests.swift

@@ -79,9 +79,7 @@ class CryptoSwiftTests: XCTestCase {
             let buf = UnsafeMutablePointer<UInt8>(calloc(2048, sizeof(UInt8)))
             let buf = UnsafeMutablePointer<UInt8>(calloc(2048, sizeof(UInt8)))
             let data = NSData(bytes: buf, length: 2048)
             let data = NSData(bytes: buf, length: 2048)
             self.startMeasuring()
             self.startMeasuring()
-            for _ in [0...1000] {
-                Hash.md5(data).calculate()
-            }
+            Hash.md5(data).calculate()
             self.stopMeasuring()
             self.stopMeasuring()
             buf.dealloc(1024)
             buf.dealloc(1024)
             buf.destroy()
             buf.destroy()
@@ -93,13 +91,11 @@ class CryptoSwiftTests: XCTestCase {
             let buf = UnsafeMutablePointer<UInt8>(calloc(2048, sizeof(UInt8)))
             let buf = UnsafeMutablePointer<UInt8>(calloc(2048, sizeof(UInt8)))
             let data = NSData(bytes: buf, length: 2048)
             let data = NSData(bytes: buf, length: 2048)
             self.startMeasuring()
             self.startMeasuring()
-            for _ in [0...1000] {
-                var outbuf = UnsafeMutablePointer<UInt8>.alloc(Int(CC_MD5_DIGEST_LENGTH))
-                CC_MD5(data.bytes, CC_LONG(data.length), outbuf)
-                let output = NSData(bytes: outbuf, length: Int(CC_MD5_DIGEST_LENGTH));
-                outbuf.dealloc(Int(CC_MD5_DIGEST_LENGTH))
-                outbuf.destroy()
-            }
+            var outbuf = UnsafeMutablePointer<UInt8>.alloc(Int(CC_MD5_DIGEST_LENGTH))
+            CC_MD5(data.bytes, CC_LONG(data.length), outbuf)
+            let output = NSData(bytes: outbuf, length: Int(CC_MD5_DIGEST_LENGTH));
+            outbuf.dealloc(Int(CC_MD5_DIGEST_LENGTH))
+            outbuf.destroy()
             self.stopMeasuring()
             self.stopMeasuring()
             buf.dealloc(1024)
             buf.dealloc(1024)
             buf.destroy()
             buf.destroy()