Feng %!s(int64=9) %!d(string=hai) anos
pai
achega
dbed5b914a
Modificáronse 2 ficheiros con 24 adicións e 2 borrados
  1. 13 1
      src/emqttd_guid.erl
  2. 11 1
      test/emqttd_lib_SUITE.erl

+ 13 - 1
src/emqttd_guid.erl

@@ -29,7 +29,7 @@
 %% @end
 -module(emqttd_guid).
 
--export([gen/0, new/0, timestamp/1]).
+-export([gen/0, new/0, timestamp/1, to_hexstr/1, from_hexstr/1, to_base62/1, from_base62/1]).
 
 -define(MAX_SEQ, 16#FFFF).
 
@@ -120,3 +120,15 @@ npid() ->
                     PidByte3:8, PidByte4:8>>,
     NPid.
 
+to_hexstr(<<I:128>>) ->
+    list_to_binary(integer_to_list(I, 16)).
+
+from_hexstr(S) ->
+    I = list_to_integer(binary_to_list(S), 16), <<I:128>>.
+
+to_base62(<<I:128>>) ->
+    emqttd_base62:encode(I).
+
+from_base62(S) ->
+    I = emqttd_base62:decode(S), <<I:128>>.
+

+ 11 - 1
test/emqttd_lib_SUITE.erl

@@ -16,6 +16,8 @@
 
 -module(emqttd_lib_SUITE).
 
+-include_lib("eunit/include/eunit.hrl").
+
 -compile(export_all).
 
 -define(SOCKOPTS, [
@@ -35,7 +37,7 @@ all() -> [{group, guid}, {group, opts},
           {group, node}, {group, base62}].
 
 groups() ->
-    [{guid, [], [guid_gen]},
+    [{guid, [], [guid_gen, guid_hexstr, guid_base62]},
      {opts, [], [opts_merge]},
      {?PQ,  [], [priority_queue_plen,
                  priority_queue_out2]},
@@ -56,6 +58,14 @@ guid_gen(_) ->
     Ts2 = emqttd_guid:timestamp(emqttd_guid:gen()),
     true = Ts2 > Ts1.
 
+guid_hexstr(_) ->
+    Guid = emqttd_guid:gen(),
+    ?assertEqual(Guid, emqttd_guid:from_hexstr(emqttd_guid:to_hexstr(Guid))).
+
+guid_base62(_) ->
+    Guid = emqttd_guid:gen(),
+    ?assertEqual(Guid, emqttd_guid:from_base62(emqttd_guid:to_base62(Guid))).
+
 %%--------------------------------------------------------------------
 %% emqttd_opts
 %%--------------------------------------------------------------------