示例#1
0
CTEST2(tube, send_pdec)
{
    tube *t;
    uint8_t ip[]   = {192, 168, 0, 0};
    uint8_t token[] = {42, 42, 42, 42, 42};
    char url[]= "http://example.com";
    struct sockaddr_in6 remoteAddr;
    cn_cbor_context ctx;
    cn_cbor *map;

    ASSERT_TRUE(ls_sockaddr_get_remote_ip_addr("127.0.0.1",
                                               "1402",
                                               (struct sockaddr*)&remoteAddr,
                                               sizeof(remoteAddr),
                                               &data->err));

    ASSERT_TRUE( tube_manager_open_tube(data->mgr, (const struct sockaddr*)&remoteAddr, &t, &data->err));

    ASSERT_TRUE(path_mandatory_keys_create(ip, sizeof(ip), token, sizeof(token), url, &ctx, &map, &data->err));

    ASSERT_TRUE( tube_send_pdec(t,map,true, &data->err) );

    ls_pool_destroy((ls_pool*)ctx.context);

    tube_manager_remove(data->mgr, t);
    ASSERT_EQUAL(tube_manager_size(data->mgr), 0);
}
示例#2
0
CTEST2(tube, tube_data)
{
    tube *t;
    uint8_t udata[] = "SPUD_makeUBES_FUN";
    struct sockaddr_storage remoteAddr;
    ASSERT_TRUE( ls_sockaddr_get_remote_ip_addr("127.0.0.1",
                                                "1402",
                                                (struct sockaddr*)&remoteAddr,
                                                sizeof(remoteAddr),
                                                &data->err));

    ASSERT_TRUE( tube_manager_open_tube(data->mgr, (const struct sockaddr*)&remoteAddr, &t, &data->err));

    ASSERT_TRUE( tube_data(t,
                           udata,
                           17,
                           &data->err));

    ASSERT_TRUE( tube_data(t,
                           NULL,
                           0,
                           &data->err));
    tube_manager_remove(data->mgr, t);
    ASSERT_EQUAL(tube_manager_size(data->mgr), 0);
}
示例#3
0
CTEST2(tube, close)
{
    tube *t;
    struct sockaddr_in6 remoteAddr;

    ASSERT_TRUE( ls_sockaddr_get_remote_ip_addr("127.0.0.1",
                                                "1402",
                                                (struct sockaddr *)&remoteAddr,
                                                sizeof(remoteAddr),
                                                &data->err));

    ASSERT_TRUE( tube_manager_open_tube(data->mgr, (const struct sockaddr*)&remoteAddr, &t, &data->err));
    ASSERT_TRUE( tube_close(t, &data->err));
}
示例#4
0
CTEST2(tube, open)
{
    tube *t;
	ls_pktinfo *pi;
	struct in_pktinfo info4;
    struct sockaddr_in6 remoteAddr;
    ASSERT_TRUE( ls_sockaddr_get_remote_ip_addr("::1",
                                                "1402",
                                                (struct sockaddr*)&remoteAddr,
                                                sizeof(remoteAddr),
                                                &data->err));

    ASSERT_TRUE( tube_manager_open_tube(data->mgr, (const struct sockaddr*)&remoteAddr, &t, &data->err));
    ASSERT_EQUAL(tube_manager_size(data->mgr), 1);


	ASSERT_TRUE(ls_pktinfo_create(&pi, &data->err));
    info4.ipi_addr.s_addr = htonl(0x7f000001);
    ls_pktinfo_set4(pi, &info4);
	tube_set_local(t, pi, &data->err);
	ASSERT_TRUE( tube_print(t, &data->err));
}
示例#5
0
int
spudtest(int    argc,
         char** argv)
{
  ls_err     err;
  size_t     i;
  const char nums[] = "0123456789";

  if (argc < 2)
  {
    fprintf(stderr, "spudload <destination>\n");
    exit(64);
  }
#if defined(__APPLE__)
  srandomdev();
#endif
#if defined(__LINUX__)
  srandom( time(NULL) );
#endif
  for (i = 0; i < sizeof(data); i++)
  {
    data[i] = nums[i % 10];
  }

  if ( !ls_sockaddr_get_remote_ip_addr(argv[1],
                                       "1402",
                                       (struct sockaddr*)&remoteAddr,
                                       sizeof(remoteAddr),
                                       &err) )
  {
    return 1;
  }

  if ( !tube_manager_create(0, &mgr, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_create");
    return 1;
  }
  if ( !tube_manager_socket(mgr, 0, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_socket");
    return 1;
  }

  if ( !tube_manager_signal(mgr, SIGINT, done, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_signal");
    return 1;
  }

  if ( !tube_manager_bind_event(mgr, EV_REMOVE_NAME, remove_cb, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_bind_event");
    return 1;
  }

  memset( tubes, 0, sizeof(tubes) );

  /* Start and listen to the sockets. */
  pthread_create(&listenThread, NULL, socketListen, NULL);

  return markov();
}
示例#6
0
int
spudtest(int    argc,
         char** argv)
{
  ls_err                  err;
  int                     ch;
  struct sockaddr_storage addr;
  /* bool has_addr = false;; */

  while ( ( ch = getopt(argc, argv, "?hvs:") ) != -1 )
  {
    switch (ch)
    {
    case 'v':
      ls_log_set_level(LS_LOG_VERBOSE);
      break;
    case 's':
      if ( !ls_sockaddr_parse(optarg, (struct sockaddr*)&addr, sizeof(addr),
                              &err) )
      {
        LS_LOG_ERR(err, "Invalid address");
        return 1;
      }
      /* has_addr = true; */
      break;
    case 'h':
    case '?':
    default:
      usage();
      break;
    }
  }
  argc -= optind;
  argv += optind;

  if (argc < 1)
  {
    usage();
  }

  ls_log(LS_LOG_INFO, "entering spudtest");
  memset( &config, 0, sizeof(config) );

  if ( !ls_sockaddr_get_remote_ip_addr(argv[0],
                                       "1402",
                                       (struct sockaddr*)&config.remoteAddr,
                                       sizeof(config.remoteAddr),
                                       &err) )
  {
    LS_LOG_ERR(err, "ls_sockaddr_get_remote_ip_addr");
    return 1;
  }

  if ( !tube_manager_create(0, &mgr, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_create");
    return 1;
  }
  if ( !tube_manager_socket(mgr, 0, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_socket");
    return 1;
  }

  /* TODO: make source addresses work (again?). */
  /* if (has_addr) { */
  /*     LOGI("source address: %s\n", inet_ntop(AF_INET6, &addr, buf,
   * sizeof(buf))); */
  /* } */

  if ( !tube_manager_bind_event(mgr, EV_LOOPSTART_NAME, loopstart_cb, &err) ||
       !tube_manager_bind_event(mgr, EV_RUNNING_NAME, running_cb, &err) ||
       !tube_manager_bind_event(mgr, EV_DATA_NAME, data_cb, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_bind_event");
    return 1;
  }

  if ( !tube_manager_signal(mgr, SIGINT, done_sig, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_signal");
    return 1;
  }

  if ( !tube_manager_schedule_ms(mgr, 5000, done, NULL, NULL, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_schedule_ms");
    return 1;
  }

  if ( !tube_manager_loop(mgr, &err) )
  {
    LS_LOG_ERR(err, "tube_manager_loop");
  }

  return 0;
}