p4app icon indicating copy to clipboard operation
p4app copied to clipboard

Mininet crash when "program" is placed in subdirectory

Open MehTheHedgehog opened this issue 5 years ago • 0 comments

Hi everyone,

I've got a problem with running my own package when P4 source file are not placed in package root. It seems to be issue with p4apprunner.py, which set log file from program section of manifest as is, so single_switch_mininet.py cannot create log file in non existing directory.

Changing p4apprunner.py resolved issue and also work with example packages.

log_file = os.path.join('/var/log', manifest.program_file + '.log')

to

log_file = os.path.join('/var/log', (os.path.split(manifest.program_file)[-1]) + '.log')

Config:

{
  "program": "src/main.p4",
  "language": "p4-14",
  "targets": {
    "debug": {
      "use": "mininet",
      "num-hosts": 2,
      "switch-config": "cfg/p4app.d/sim_config.config"
    }
  }
}

Run output:

Entering build directory.
Extracting package.
> touch /tmp/p4app_logs/p4s.s1.log
> ln -s /tmp/p4app_logs/p4s.s1.log /tmp/p4s.s1.log
Reading package manifest.
> p4c-bm2-ss --p4v 14 -D _BMV2_ -I include/ "src/main.p4" -o "main.json"
> python2 "/scripts/mininet/single_switch_mininet.py" --log-file "/var/log/src/main.p4.log" --cli-message "mininet_message.txt" --num-hosts 2 --switch-config "cfg/p4app.d/sim_config.config" --behavioral-exe "simple_switch" --json "main.json"
Adding host h1
Adding host h2
*** Error setting resource limits. Mininet's performance may be affected.
*** Creating network
*** Adding hosts:
h1 h2 
*** Adding switches:
Traceback (most recent call last):
  File "/scripts/mininet/single_switch_mininet.py", line 137, in <module>
    main()
  File "/scripts/mininet/single_switch_mininet.py", line 88, in main
    controller = None)
  File "build/bdist.linux-x86_64/egg/mininet/net.py", line 173, in __init__
  File "build/bdist.linux-x86_64/egg/mininet/net.py", line 501, in build
  File "build/bdist.linux-x86_64/egg/mininet/net.py", line 482, in buildFromTopo
  File "build/bdist.linux-x86_64/egg/mininet/net.py", line 259, in addSwitch
  File "/scripts/mininet/p4_mininet.py", line 80, in __init__
    self.output = open(self.log_file, 'w')
IOError: [Errno 2] No such file or directory: '/var/log/src/main.p4.log'

This change is in my fork of this repo and can be PR here.

MehTheHedgehog avatar Feb 28 '20 13:02 MehTheHedgehog