OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 #include <memory> | 6 #include <memory> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "blimp/common/blob_cache/id_util.h" | |
9 #include "blimp/common/blob_cache/mock_blob_cache.h" | 10 #include "blimp/common/blob_cache/mock_blob_cache.h" |
10 #include "blimp/net/blob_channel/blob_channel_sender_impl.h" | 11 #include "blimp/net/blob_channel/blob_channel_sender_impl.h" |
11 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
13 | 14 |
15 using testing::_; | |
16 using testing::Pointee; | |
17 using testing::Return; | |
18 using testing::UnorderedElementsAre; | |
19 | |
14 namespace blimp { | 20 namespace blimp { |
15 namespace { | 21 namespace { |
16 | 22 |
17 using testing::_; | |
18 using testing::Pointee; | |
19 using testing::Return; | |
20 | |
21 const char kBlobId[] = "blob-1"; | 23 const char kBlobId[] = "blob-1"; |
22 const char kBlobPayload[] = "blob-1-payload"; | 24 const char kBlobPayload[] = "blob-1-payload"; |
25 const char kBlobId2[] = "blob-2"; | |
23 | 26 |
24 // Helper function for creating a cache payload vector from a string. | 27 // Helper function for creating a cache payload vector from a string. |
25 BlobDataPtr CreatePayload(const std::string& input) { | 28 BlobDataPtr CreatePayload(const std::string& input) { |
26 BlobDataPtr output(new BlobData(input)); | 29 BlobDataPtr output(new BlobData(input)); |
27 return output; | 30 return output; |
28 } | 31 } |
29 | 32 |
30 MATCHER_P(BlobDataEqual, expected, "") { | 33 MATCHER_P(BlobDataEqual, expected, "") { |
31 return expected->data == arg->data; | 34 return expected->data == arg->data; |
32 } | 35 } |
(...skipping 14 matching lines...) Expand all Loading... | |
47 blob_sender_( | 50 blob_sender_( |
48 new BlobChannelSenderImpl(base::WrapUnique(mock_cache_), | 51 new BlobChannelSenderImpl(base::WrapUnique(mock_cache_), |
49 base::WrapUnique(mock_delegate_))) {} | 52 base::WrapUnique(mock_delegate_))) {} |
50 ~BlobChannelSenderTest() override {} | 53 ~BlobChannelSenderTest() override {} |
51 | 54 |
52 testing::StrictMock<MockSenderDelegate>* mock_delegate_; | 55 testing::StrictMock<MockSenderDelegate>* mock_delegate_; |
53 testing::StrictMock<MockBlobCache>* mock_cache_; | 56 testing::StrictMock<MockBlobCache>* mock_cache_; |
54 std::unique_ptr<BlobChannelSender> blob_sender_; | 57 std::unique_ptr<BlobChannelSender> blob_sender_; |
55 }; | 58 }; |
56 | 59 |
57 TEST_F(BlobChannelSenderTest, TestPutBlob) { | 60 TEST_F(BlobChannelSenderTest, PutBlob) { |
58 EXPECT_CALL(*mock_cache_, | 61 EXPECT_CALL(*mock_cache_, |
59 Put(kBlobId, BlobDataEqual(CreatePayload(kBlobPayload)))); | 62 Put(kBlobId, BlobDataEqual(CreatePayload(kBlobPayload)))); |
60 EXPECT_CALL(*mock_cache_, Contains(kBlobId)).WillOnce(Return(false)); | 63 EXPECT_CALL(*mock_cache_, Contains(kBlobId)).WillOnce(Return(false)); |
61 blob_sender_->PutBlob(kBlobId, CreatePayload(kBlobPayload)); | 64 blob_sender_->PutBlob(kBlobId, CreatePayload(kBlobPayload)); |
62 } | 65 } |
63 | 66 |
64 TEST_F(BlobChannelSenderTest, TestPutBlobDuplicate) { | 67 TEST_F(BlobChannelSenderTest, PutBlobDuplicate) { |
65 EXPECT_CALL(*mock_cache_, Contains(kBlobId)).WillOnce(Return(true)); | 68 EXPECT_CALL(*mock_cache_, Contains(kBlobId)).WillOnce(Return(true)); |
66 blob_sender_->PutBlob(kBlobId, CreatePayload(kBlobPayload)); | 69 blob_sender_->PutBlob(kBlobId, CreatePayload(kBlobPayload)); |
67 } | 70 } |
68 | 71 |
69 TEST_F(BlobChannelSenderTest, TestPush) { | 72 TEST_F(BlobChannelSenderTest, Push) { |
70 auto payload = CreatePayload(kBlobPayload); | 73 auto payload = CreatePayload(kBlobPayload); |
71 EXPECT_CALL(*mock_delegate_, DeliverBlob(kBlobId, BlobDataEqual(payload))); | 74 EXPECT_CALL(*mock_delegate_, DeliverBlob(kBlobId, BlobDataEqual(payload))); |
72 EXPECT_CALL(*mock_cache_, Contains(kBlobId)) | 75 EXPECT_CALL(*mock_cache_, Contains(kBlobId)) |
73 .WillOnce(Return(false)) | 76 .WillOnce(Return(false)) |
74 .WillOnce(Return(true)); | 77 .WillOnce(Return(true)); |
75 EXPECT_CALL(*mock_cache_, Put(kBlobId, BlobDataEqual(payload))); | 78 EXPECT_CALL(*mock_cache_, Put(kBlobId, BlobDataEqual(payload))); |
76 EXPECT_CALL(*mock_cache_, Get(kBlobId)).WillOnce(Return(payload)); | 79 EXPECT_CALL(*mock_cache_, Get(kBlobId)).WillOnce(Return(payload)); |
77 blob_sender_->PutBlob(kBlobId, payload); | 80 blob_sender_->PutBlob(kBlobId, payload); |
78 blob_sender_->DeliverBlob(kBlobId); | 81 blob_sender_->DeliverBlob(kBlobId); |
79 } | 82 } |
80 | 83 |
84 TEST_F(BlobChannelSenderTest, GetCachedBlobIds) { | |
85 std::string blob_id1 = CalculateBlobId(kBlobId); | |
86 std::string blob_id2 = CalculateBlobId(kBlobId2); | |
87 BlobDataPtr blob_payload1 = CreatePayload(kBlobPayload); | |
88 | |
89 EXPECT_CALL(*mock_cache_, Contains(blob_id1)).WillOnce(Return(true)); | |
90 EXPECT_CALL(*mock_cache_, Get(blob_id1)).WillOnce(Return(blob_payload1)); | |
91 | |
92 std::vector<BlobId> cache_state; | |
93 cache_state.push_back(blob_id1); | |
94 cache_state.push_back(blob_id2); | |
95 EXPECT_CALL(*mock_cache_, GetCachedBlobIds()).WillOnce(Return(cache_state)); | |
96 | |
97 // Mark one of the blobs as delivered. | |
98 EXPECT_CALL(*mock_delegate_, | |
99 DeliverBlob(blob_id1, BlobDataEqual(blob_payload1))); | |
100 blob_sender_->DeliverBlob(blob_id1); | |
Wez
2016/07/01 00:30:21
nit: It's strange to group these as a single logic
Kevin M
2016/07/18 16:58:16
Done.
| |
101 | |
102 std::vector<BlobChannelSender::CacheStateEntry> actual = | |
103 blob_sender_->GetCachedBlobIds(); | |
104 EXPECT_EQ(2u, actual.size()); | |
105 EXPECT_EQ(blob_id1, actual[0].id); | |
106 EXPECT_TRUE(actual[0].was_delivered); | |
107 EXPECT_EQ(blob_id2, actual[1].id); | |
108 EXPECT_FALSE(actual[1].was_delivered); | |
109 } | |
110 | |
81 } // namespace | 111 } // namespace |
82 } // namespace blimp | 112 } // namespace blimp |
OLD | NEW |