NatoliChris / diablo-benchmark

The "DIstributed Analytical BLOckchain" Benchmark Framework. (Diablo). Measures blockchains with a focus on real-world applications and workload generation.
Apache License 2.0
11 stars 8 forks source link

Go dependencies between v1 and v2 launching an experiment #28

Open vincenzo-dip8 opened 10 months ago

vincenzo-dip8 commented 10 months ago

Describe the bug I'm trying to use the instructions in the https://diablobench.github.io/fresh-install at the Install yourself sections and use the final command ./bin/eurosys workload-native-10.yaml setup.txt

I’m facing several issues with go during the deploy, because minion (v2) set the go version to 1.17.8 (while in diablo-v1 use 1.14 or greater). The step is when v2 take from repo v1 the Makefile and make these step:

go mod tidy
make reqs
make diablo

what I noticed are problems with: golang.org/x/lint golang.org/x/tools/go/ast/astutil golang.org/x/tools/internal/typeparams golang.org/x/tools/go/gcexportdata

Screenshots image

Docker Container Environment

Others Question: I'm trying to understand how you use minion (v2) in the paper at https://arxiv.org/abs/2311.09440, because i notice that from the "minion paper" you switch from AWS to a simple testbed that i think use just SSH. Since i'm going to do the same, i need to understand the steps to not use AWS. In particular, are the guidelines given in the FreshInstallation/InstallYourself section useful? With setup.txt file to be used in order to execute the experiment i need on more than one machine/container simply with ssh @NatoliChris @gauthier-voron @lebdron

Also, I'm using the Dockerfile below to solve other dependencies issues that happen during the deploy, but then i stop on the bug above.

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update -y && \
    apt-get install -y \
        openssh-client openssh-server \
        net-tools netcat \
        cloud-utils \
        curl wget \
        git python3-pip \
        bash \
        perl-base libconfig-yaml-perl libcapture-tiny-perl libbz2-dev libreadline-dev libssl-dev libffi-dev libsqlite3-dev libncurses5-dev libncursesw5-dev liblzma-dev \
        sudo

SHELL ["/bin/bash", "-c"]

RUN echo "ALL ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/nopasswd

COPY id_ed25519 /root/.ssh/id_ed25519
COPY id_ed25519.pub /root/.ssh/id_ed25519.pub
COPY id_ed25519.pub /root/.ssh/authorized_keys

RUN echo "StrictHostKeyChecking no" >> /root/.ssh/config

RUN chmod 700 /root/.ssh && \
    chmod 600 /root/.ssh/id_ed25519.pub && \
    chmod 600 /root/.ssh/authorized_keys && \ 
    chmod 600 /root/.ssh/config

RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config && \
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config 

EXPOSE 22

RUN curl -L https://install.perlbrew.pl | bash
RUN source /root/perl5/perlbrew/etc/bashrc
RUN exec bash; \
    perlbrew install --notest --force perl-5.34.0; \
    perlbrew switch perl-5.34.0

# Install other Perl dependencies
RUN wget -O YAML-1.24.tar.gz http://search.cpan.org/CPAN/authors/id/T/TI/TINITA/YAML-1.24.tar.gz; \
    tar -xzvf YAML-1.24.tar.gz; \
    cd YAML-1.24; \
    perl Makefile.PL; \
    make; \
    make install; \
    cd /; \
    wget -O IO-Tee-0.65.tar.gz http://search.cpan.org/CPAN/authors/id/N/NE/NEILB/IO-Tee-0.65.tar.gz; \
    tar -xzvf IO-Tee-0.65.tar.gz; \
    cd IO-Tee-0.65; \
    perl Makefile.PL; \
    make; \
    make install; \
    cd /; \
    cpan -i Capture::Tiny; \
    cpan -i XML::Simple; \
    cpan YAML;  
    cpan JSON

RUN curl https://pyenv.run | bash; \
    echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> /root/.bashrc; \
    echo 'eval "$(pyenv init --path)"' >> /root/.bashrc; \
    echo 'eval "$(pyenv virtualenv-init -)"' >> /root/.bashrc; \
    source /root/.bashrc
RUN exec bash; \
    pyenv install -s 3.10.6; \
    pyenv global 3.10.6; \
    pip install PyYAML

RUN apt-get clean; rm -rf /var/lib/apt/lists/