Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: pkg/mdns/test/resource_record_cache.dart

Issue 1412063015: Improve resource record implementation in the mdns package. (Closed) Base URL: https://github.com/dart-lang/fletch.git@master
Patch Set: Address comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/mdns/test/resource_record_cache.dart
diff --git a/pkg/mdns/test/resource_record_cache.dart b/pkg/mdns/test/resource_record_cache.dart
new file mode 100644
index 0000000000000000000000000000000000000000..ade127cc9b687ff50f76efb6bd68d99a06db61ab
--- /dev/null
+++ b/pkg/mdns/test/resource_record_cache.dart
@@ -0,0 +1,91 @@
+// Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
+// Test that the resource record cache works correctly. In particular, make
+// sure that it removes all entries for a name before inserting new records
+// of that name.
+
+import 'dart:io';
+
+import 'package:expect/expect.dart';
+import 'package:mdns/src/constants.dart' show RRType;
+import 'package:mdns/src/native_protocol_client.dart'
+ show ResourceRecordCache;
+import 'package:mdns/src/packet.dart';
+
+int entries(ResourceRecordCache cache) {
+ int c = 0;
+ for (int i = 0; i < cache.size; i++) {
+ if (cache.buffer[i] != null) {
+ ++c;
+ }
+ }
+ return c;
+}
+
+main() {
+ testOverwrite();
+ testTimeout();
+}
+
+testOverwrite() {
+ InternetAddress ip1 = new InternetAddress("192.168.1.1");
+ InternetAddress ip2 = new InternetAddress("192.168.1.2");
+ int valid = new DateTime.now().millisecondsSinceEpoch + 86400 * 1000;
+
+ ResourceRecordCache cache = new ResourceRecordCache();
+
+ // Add two different records.
+ cache.updateRecords([
+ new ResourceRecord(RRType.A, "hest", ip1, valid),
+ new ResourceRecord(RRType.A, "fisk", ip2, valid)]);
+ Expect.equals(2, entries(cache));
+
+ // Update these records.
+ cache.updateRecords([
+ new ResourceRecord(RRType.A, "hest", ip1, valid),
+ new ResourceRecord(RRType.A, "fisk", ip2, valid)]);
+ Expect.equals(2, entries(cache));
+
+ // Add two records with the same name (should remove the old one
+ // with that name only.)
+ cache.updateRecords([
+ new ResourceRecord(RRType.A, "hest", ip1, valid),
+ new ResourceRecord(RRType.A, "hest", ip2, valid)]);
+ Expect.equals(3, entries(cache));
+
+ // Overwrite the two cached entries with one with the same name.
+ cache.updateRecords([
+ new ResourceRecord(RRType.A, "hest", ip1, valid),
+ ]);
+ Expect.equals(2, entries(cache));
+}
+
+testTimeout() {
+ InternetAddress ip1 = new InternetAddress("192.168.1.1");
+ InternetAddress ip2 = new InternetAddress("192.168.1.2");
+ int valid = new DateTime.now().millisecondsSinceEpoch + 86400 * 1000;
+ int notValid = new DateTime.now().millisecondsSinceEpoch - 1;
+
+ ResourceRecordCache cache = new ResourceRecordCache();
+
+ cache.updateRecords([
+ new ResourceRecord(RRType.A, "hest", ip1, valid)
+ ]);
+ Expect.equals(1, entries(cache));
+
+ cache.updateRecords([
+ new ResourceRecord(RRType.A, "fisk", ip1, notValid)
+ ]);
+
+ var results;
+ results = [];
+ cache.lookup("hest", RRType.A, results);
+ Expect.isFalse(results.isEmpty);
+
+ results = [];
+ cache.lookup("fisk", RRType.A, results);
+ Expect.isTrue(results.isEmpty);
+ Expect.equals(1, entries(cache));
+}
« pkg/mdns/test/lookup_resolver_test.dart ('K') | « pkg/mdns/test/lookup_resolver_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698