在 IntelliJ IDEA 中配置 2 节点模拟

Configuring a 2-node simulation in IntelliJ IDEA

我想在 IntelliJ 中设置网络模拟 IDEA。为此,我正在尝试配置 IDE 以使用包中包含的 2-node-network.groovy 脚本。我可以 运行 模拟脚本并通过 Web 界面访问调制解调器,但是一些 shell 命令如 'tell'、'host' 等将不起作用。

到目前为止我采取的步骤:

  1. 在IDE配置一个环境变量指向Unetstack主目录(unet_home=.../unet-3.0.0/)

  2. 使用从 2-node-network.groovy 脚本复制的代码在 IDE 中创建了新的 运行 配置,但更改了 home 变量:

    import org.arl.fjage.RealTimePlatform

    def unet_home = System.getenv("unet_home");
    println(unet_home)

    println '''
    2-node network
    --------------
    Stack:
    Node A: tcp://localhost:1101, http://localhost:8081/
    Node B: tcp://localhost:1102, http://localhost:8082/
    '''

    platform = RealTimePlatform   // use real-time mode

    // run the simulation forever
    simulate {
        node 'A', location: [ 0.km, 0.km, -15.m], web: 8081, api: 1101, stack: "$unet_home/etc/setup"
        node 'B', location: [ 1.km, 0.km, -15.m], web: 8082, api: 1102, stack: "$unet_home/etc/setup"
    }

Web shell 输出:

> mac
<<< CSMA >>>

[org.arl.unet.mac.CSMAParam]
  maxBackoff = 30.0
  minBackoff = 0.5
  phy = phy
  reservationsPending = 0

[org.arl.unet.mac.MacParam]
  ackPayloadSize = 0
  channelBusy = false
  maxReservationDuration = 600.0
  recommendedReservationDuration = 15.0
  reservationPayloadSize = 0
> tell host('A'), "Hello"
Unknown method: host(...)
> tell
Unknown command or property: tell
>

在 shell 启动过程中,命令从 etc/fshrc.groovy 文件加载。好像是这个文件执行失败了,可能是找不到。

用于查找 etc 的初始化脚本使用的系统 属性 是 unet.home(不是 unet_home)。这通常在 bin/unet shell 脚本中从环境变量 UNET_HOME 启动时设置 Java:

java -Dunet.home="$UNET_HOME" ...

如果你使用shell脚本来运行你的模拟,你应该设置环境变量UNET_HOME(区分大小写)指向你的unet-3.0.0文件夹,其中包含 etc/ 文件夹。如果你自己直接运行java,你应该像上面那样设置系统属性unet.home

在您的模拟脚本中,您可以检查是否设置正确:

println(System.getProperty('unet.home'))

帮你调试。