Skip to content

Commit f713c85

Browse files
committed
Fix deadpool-memcached
1 parent c24a947 commit f713c85

File tree

7 files changed

+56
-6
lines changed

7 files changed

+56
-6
lines changed

.devcontainer/.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ REDIS_SENTINEL__MASTER_NAME=mymaster
1414

1515
AMQP__URL=amqp://deadpool:deadpool@rabbitmq:5672/deadpool
1616

17-
MEMCACHED__ADDR=memcached:11211
17+
MEMCACHED__ADDR=tcp://memcached:11211

.devcontainer/compose.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ services:
6565
volumes:
6666
- rabbitmq-data:/var/lib/rabbitmq
6767

68+
memcached:
69+
image: memcached:1.6
70+
6871
volumes:
6972
postgres-data:
7073
redis-data:

.github/workflows/deadpool-memcached.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,19 @@ jobs:
6767
test:
6868
name: Test
6969
runs-on: ubuntu-latest
70-
services: {}
70+
services:
71+
rabbitmq:
72+
image: memcached:1.6
73+
ports:
74+
- 11211:11211
7175
steps:
7276
- uses: actions/checkout@v3
7377
- uses: actions-rs/toolchain@v1
7478
with:
7579
profile: minimal
7680
toolchain: stable
77-
- env: {}
81+
- env:
82+
MEMCACHED__ADDR: tcp://127.0.0.1:11211
7883
run: cargo test --all-features
7984
name: deadpool-memcached
8085
"on":

crates/deadpool-memcached/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,8 @@ deadpool = { path = "../deadpool", version = "0.12.0", default-features = false,
3636
# again.
3737
tokio = { version = "1.29", default-features = false, features = ["net"] }
3838

39+
[dev-dependencies]
40+
tokio = { version = "1.29", features = ["macros", "rt-multi-thread"] }
41+
3942
[package.metadata.cargo-machete]
4043
ignored = ["tokio"]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
11
backend: async-memcached
2+
test:
3+
services:
4+
rabbitmq:
5+
image: memcached:1.6
6+
ports:
7+
- 11211:11211
8+
env:
9+
MEMCACHED__ADDR: tcp://127.0.0.1:11211

crates/deadpool-memcached/src/lib.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@ type RecycleResult = deadpool::managed::RecycleResult<Error>;
1717
type ConfigError = Infallible;
1818

1919
pub use deadpool::managed::reexports::*;
20-
deadpool::managed_reexports!("memcached", Manager, Client, Error, ConfigError);
20+
deadpool::managed_reexports!(
21+
"memcached",
22+
Manager,
23+
deadpool::managed::Object<Manager>,
24+
Error,
25+
ConfigError
26+
);
2127

2228
/// The manager for creating and recyling memcache connections
2329
pub struct Manager {
@@ -26,8 +32,8 @@ pub struct Manager {
2632

2733
impl Manager {
2834
/// Create a new manager for the given address.
29-
pub fn new(addr: String) -> Self {
30-
Self { addr }
35+
pub fn new(addr: impl Into<String>) -> Self {
36+
Self { addr: addr.into() }
3137
}
3238
}
3339

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//! Basic tests for deadpool-memcached
2+
use std::env;
3+
4+
use async_memcached::AsciiProtocol;
5+
use deadpool_memcached::{Manager, Pool};
6+
7+
fn create_pool() -> Pool {
8+
let addr = env::var("MEMCACHED__ADDR").unwrap();
9+
let manager = Manager::new(addr);
10+
Pool::builder(manager).build().unwrap()
11+
}
12+
13+
#[tokio::test]
14+
async fn test_set_get() {
15+
let test_key = "test:basic:test_set_get";
16+
let test_value = "answer_42";
17+
let pool = create_pool();
18+
let mut conn = pool.get().await.unwrap();
19+
let _ = conn.delete(test_key).await;
20+
assert_eq!(conn.get(test_key).await.unwrap(), None);
21+
conn.set(test_key, test_value, None, None).await.unwrap();
22+
let value =
23+
String::from_utf8(conn.get(test_key).await.unwrap().unwrap().data.unwrap()).unwrap();
24+
assert_eq!(value, test_value);
25+
}

0 commit comments

Comments
 (0)