Pure Erlang implementation of 9p2000 protocol
filesystem fs 9p2000 erlang 9p
at master 77 lines 2.2 kB view raw
1% SPDX-FileCopyrightText: 2026 Łukasz Niemier <~@hauleth.dev> 2% 3% SPDX-License-Identifier: Apache-2.0 4 5-module(e9p_msg_SUITE). 6 7-compile(export_all). 8 9-include("e9p_internal.hrl"). 10 11-include_lib("stdlib/include/assert.hrl"). 12-include_lib("common_test/include/ct.hrl"). 13 14all() -> [ 15 stat_encode_decode, 16 rstat_encode_decode, 17 rclunk_encode_decode, 18 rflush_encode_decode, 19 rwstat_encode_decode, 20 rremove_encode_decode 21 ]. 22 23stat_encode_decode(_Conf) -> 24 Stat = #{ 25 type => 0, 26 dev => 0, 27 qid => e9p:make_qid(regular, 0, 0), 28 mode => 0, 29 atime => 0, 30 mtime => 0, 31 length => 0, 32 name => <<>>, 33 uid => <<>>, 34 gid => <<>>, 35 muid => <<>> 36 }, 37 Out = iolist_to_binary(e9p_msg:encode_stat(Stat)), 38 Decoded = e9p_msg:parse_stat(Out), 39 ?assertEqual({ok, Stat}, Decoded). 40 41rstat_encode_decode(_Conf) -> 42 Stat = #{ 43 type => 0, 44 dev => 0, 45 qid => e9p:make_qid(regular, 0, 0), 46 mode => 0, 47 atime => 0, 48 mtime => 0, 49 length => 0, 50 name => <<>>, 51 uid => <<>>, 52 gid => <<>>, 53 muid => <<>> 54 }, 55 Msg = #rstat{stat = Stat}, 56 Tag = 1, 57 Out = e9p_msg:encode(Tag, Msg), 58 Decoded = e9p_msg:parse(iolist_to_binary(Out)), 59 ?assertEqual({ok, Tag, Msg}, Decoded). 60 61rclunk_encode_decode(_Conf) -> 62 enc_dec(#rclunk{}). 63 64rflush_encode_decode(_Conf) -> 65 enc_dec(#rflush{}). 66 67rwstat_encode_decode(_Conf) -> 68 enc_dec(#rwstat{}). 69 70rremove_encode_decode(_Conf) -> 71 enc_dec(#rremove{}). 72 73enc_dec(Data) -> 74 Tag = 1, 75 Out = e9p_msg:encode(Tag, Data), 76 Encoded = iolist_to_binary(Out), 77 ?assertEqual({ok, Tag, Data}, e9p_msg:parse(Encoded)).