2017-07-28 1 views
1

J'essaie d'utiliser l'attribut bazel restricted_to pour un test.Utilisation de [bazel] restricted_to attribute

Je souhaite que le test s'exécute uniquement sur une version cpu = spécifique.

Pour rendre cela un peu plus compliqué, le type de cpu est défini dans notre

/tools/cpp/CROSSTOOL file (cpu=armhf-debian). 

Je n'ai pas eu de chance avec deviner la syntaxe du paramètre restricted_to (ma première supposition était //cpu:armhf-debian, qui a juste regardé pour un paquet cpu)

Des suggestions?

Répondre

2

Il n'y a pas beaucoup de documentation sur restricted_to, et les autres règles avec lesquelles il travaille, environment et environment_group. Principalement parce que le cas d'utilisation est très spécifique à la configuration du référentiel de Google, et nous sommes en train de les remplacer par un système plus flexible. Pour utiliser restricted_to, vous devez définir plusieurs règles d'environnement et un groupe d'environnement pour les contenir, puis spécifier l'environnement auquel le test est restreint et enfin utiliser l'indicateur "--target_environment" pour spécifier le courant. groupe d'environnement. Cela ressemblerait à quelque chose comme ceci:

environment(name = "x86") 
environment(name = "ppc") 
environment_group(
    name = "cpus", 
    defaults = [":x86"], 
    environments = [ 
    ":x86", 
    ":ppc", 
    ]) 

cc_test(
    name = "test", 
    other config 
    restricted_to = [":ppc"],) 

Vous pouvez ensuite exécuter le test comme si:

bazel test --target_environment=//:ppc //:test 

pour obtenir l'environnement de vérification.

Ceci n'est pas très utile, car celui qui exécute le test doit également se rappeler de définir correctement "--target_environment".

Une meilleure façon de désactiver le test, en utilisant le code actuellement pris en charge, est d'utiliser config_setting et sélectionnez, comme ceci:

config_setting(
    name = "k8", 
    values = {"cpu": "k8"}) 
config_setting(
    name = "ppc", 
    values = {"cpu":, "ppc") 

cc_test(
    name = "test", 
    other config 
    srcs = [other sources] + 
    select({ 
     "//:x86": ["x86_test_src.cpp"], 
     "//:ppc": ["ppc_test_src.cpp"], 
     "//conditions:default": ["default_test_src.cpp"], 
    }) 

config_setting prendra une valeur basée sur le drapeau actuel « --cpu ». En changeant les fichiers inclus dans la sélection, vous pouvez contrôler quels fichiers sont inclus dans le test pour chaque paramètre CPU.

De toute évidence, ils ne doivent pas nécessairement se trouver dans le même package et les règles habituelles de visibilité Bazel s'appliquent. Voir src/BUILD de Bazel pour un exemple de config_setting, et src/test/cpp/BUILD pour un exemple d'utilisation dans select. Nous travaillons dur sur les plates-formes, ce qui est une meilleure façon de décrire et d'interroger l'environnement d'exécution de Bazel, et nous nous assurerons de publier une documentation et un article de blog lorsque les gens pourront les tester.