code: def test_strlen_dollar(client):
      # Test multi
      client.json().set(
          "doc1",
          "$",
          {"a": "foo", "nested1": {"a": "hello"}, "nested2": {"a": 31}},
      )
      assert client.json().strlen("doc1", "$..a") == [3, 5, None]
  
      res2 = client.json().strappend("doc1", "bar", "$..a")
      res1 = client.json().strlen("doc1", "$..a")
      assert res1 == res2
  
      # Test single
      client.json().strlen("doc1", "$.nested1.a") == [8]
      client.json().strlen("doc1", "$.nested2.a") == [None]
  
      # Test missing key
      with pytest.raises(exceptions.ResponseError):
          client.json().strlen("non_existing_doc", "$..a")
  
imports: import pytest
  import redis
  from redis import Redis, exceptions
  from redis.commands.json.decoders import decode_list, unstring
  from redis.commands.json.path import Path
  from .conftest import _get_client, assert_resp_response, skip_ifmodversion_lt
label_desc: Use image node_id 33 for calling a global function with example usage: test_strlen_dollar(client) without return types