private void verifyNotification(String blobId, NotificationBlobType expectedNotificationBlobType,
        BlobProperties expectedBlobProperties) {
      List<BlobCreatedEvent> events = blobCreatedEvents.get(blobId);
      Assert.assertTrue("Wrong number of events for blobId: " + events, events != null && events.size() == 1);
      BlobCreatedEvent event = events.get(0);
      assertEquals("NotificationBlobType does not match data in notification event.", expectedNotificationBlobType,
          event.notificationBlobType);
      Assert.assertTrue("BlobProperties does not match data in notification event.",
          RouterTestHelpers.arePersistedFieldsEquivalent(expectedBlobProperties, event.blobProperties));
      assertNull("Non-persistent filed should be null after serialization.",
          expectedBlobProperties.getExternalAssetTag());
      assertEquals("ExternalAssetTag in notification should match", EXTERNAL_ASSET_TAG,
          event.blobProperties.getExternalAssetTag());
      assertEquals("Expected blob size does not match data in notification event.",
          expectedBlobProperties.getBlobSize(), event.blobProperties.getBlobSize());
    }
Test that an onBlobCreated notification was generated as expected for this blob ID.
@param blobId The blob ID to look up a notification for.
@param expectedNotificationBlobType the expected {@link NotificationBlobType}.
@param expectedBlobProperties the expected {@link BlobProperties}.
ambry-router/src/test/java/com/github/ambry/router/PutManagerTest.java