@@ -33,6 +33,9 @@ public function testJobMessageSerialize()
33
33
);
34
34
35
35
$ serialized = $ message ->__serialize ();
36
+
37
+ $ this ->assertEquals ($ serialized [0 ], $ serialized ['job ' ]);
38
+ $ this ->assertEquals ($ serialized [1 ], $ serialized ['attempts ' ]);
36
39
$ this ->assertArrayHasKey ('job ' , $ serialized );
37
40
$ this ->assertArrayHasKey ('attempts ' , $ serialized );
38
41
@@ -52,6 +55,17 @@ public function testJobMessageSerializeCompatible()
52
55
53
56
$ serialized = $ message ->__serialize ();
54
57
58
+ $ this ->assertEquals ($ serialized [0 ], $ serialized ['job ' ]);
59
+ $ this ->assertEquals ($ serialized [1 ], $ serialized ['attempts ' ]);
60
+
61
+ $ message = unserialize (serialize ($ message ));
62
+ $ this ->assertInstanceOf (MessageInterface::class, $ message );
63
+ $ this ->assertInstanceOf (JobInterface::class, $ message ->job ());
64
+ $ this ->assertInstanceOf (JobInterface::class, $ message ->job ());
65
+ $ this ->assertInstanceOf (DemoJob::class, $ message ->job ());
66
+ $ this ->assertSame ($ id , $ message ->job ()->id );
67
+ $ this ->assertSame (0 , $ message ->getAttempts ());
68
+
55
69
$ serialized = [
56
70
'job ' => $ serialized ['job ' ] ?? $ serialized [0 ],
57
71
'attempts ' => 3 ,
@@ -75,4 +89,27 @@ public function testJobMessageSerializeCompatible()
75
89
$ this ->assertSame ($ id , $ message ->job ()->id );
76
90
$ this ->assertSame (5 , $ message ->getAttempts ());
77
91
}
92
+
93
+ public function testUnserializeAsOldJobMessage ()
94
+ {
95
+ $ id = rand (0 , 9999 );
96
+ $ message = new JobMessage (
97
+ new DemoJob ($ id )
98
+ );
99
+
100
+ $ serialized = serialize ($ message );
101
+ $ serialized = str_replace (
102
+ sprintf ('O:%d:"%s ' , strlen (\Hyperf \AsyncQueue \JobMessage::class), \Hyperf \AsyncQueue \JobMessage::class),
103
+ sprintf ('O:%d:"%s ' , strlen (\HyperfTest \AsyncQueue \Stub \OldJobMessage::class), \HyperfTest \AsyncQueue \Stub \OldJobMessage::class),
104
+ $ serialized
105
+ );
106
+ $ message = unserialize ($ serialized );
107
+
108
+ $ this ->assertInstanceOf (MessageInterface::class, $ message );
109
+ $ this ->assertInstanceOf (JobInterface::class, $ message ->job ());
110
+ $ this ->assertInstanceOf (JobInterface::class, $ message ->job ());
111
+ $ this ->assertInstanceOf (DemoJob::class, $ message ->job ());
112
+ $ this ->assertSame ($ id , $ message ->job ()->id );
113
+ $ this ->assertSame (0 , $ message ->getAttempts ());
114
+ }
78
115
}
0 commit comments